随笔分类 - 自定义控件
摘要:自定义控件的滚动条一直不愿意弄,今晚细看了UserControl的继承结构,感觉是利用ScrollableControl控件实现的,于想查了该基类的使用方法。MSDN中的说明我不得要领,还好在CodeProject找到了一个教程主题是:Creating a scrollable and zoomable image viewer in C# ,有4个部分组成Part 1: The image viewerPart 2: Auto scrollingPart 3: Panning and keyboard supportPart 4: Zooming, auto center, size to
阅读全文
摘要:我希望自定义的控件打开后,可以将工具栏上的控件拖到该自定义控件上。观察了Pannel控件,似乎简单得很。继承自ScrollableControl,而ScrollableControl继承自Control。两个类都没有重写绘制,只是增加一些属性和重写某些属性值。而Control有一个Controls的集合属性。似乎已做了大部分的事。我尝试直接往Control.Controls添加一个Button代码...
阅读全文
摘要:DataGridView为我们提供了方便的数据列表、编辑的方式。他提供了常用的几个编辑方式分别有DataGridViewButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn、DataGridViewLinkColumn、DataGridViewTextBoxColumn。如果你想要一个日期的列呢?只有自己去写一个DataGridViewColumn。
阅读全文
摘要:首页要取得当前DTE(代表IDE的顶级对象) 查MSDN知道C#下有两种办法: 第一种,添加Microsoft.VisualBasic的引用,使用以下代码 EnvDTE80.DTE2 devenv = (EnvDTE80.DTE2)Microsoft.VisualBasic.Interaction.CreateObject("VisualStudio.DTE.9.0", ""); 第二种,不需要添...
阅读全文
摘要:当我们定义一个enum属性时,通过IDE的属性页能看到一个下拉的列表。能不能为一个字符属性也定义一个下拉列表呢?实现也不是很复杂,需要定义一个TypeConverter。另,能否允许不通过重新编译来定义这个列表呢?设计时读取web.config几乎是不可能的事,通过文件读取的方式取项目下配置文本配置内容是可行的。那么,为了方便应用,能否通过一种方式为使用者输出一个默认的配置文本文件呢? 文章:为字...
阅读全文
摘要:在写一个控件的时候,因绘制的工作比较大,为避免闪烁,自然是使用双缓存。 Bitmap m_bmpOffscreen = null; Graphics gxOff; //Offscreen graphics m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height); ...
阅读全文
摘要:最近要为一个项目准备一个自定义控件,需要了解更多绘图的一些知识,幸好CodeProject有这么一篇文章DrawTools,为我提供了相当多的范例代码去学习。
阅读全文
摘要:创建图形的最佳方法
1.在创建自行绘制的控件时,请从 System.Windows.Forms.Control 中派生,并覆盖 OnPaint 和 OnPaintBackground 事件。
2.在 OnPaint 事件中使用 Pen、Bitmap 和 Brush 对象之前,预先对其进行缓存。OnPaint 事件的特性是它可以根据操作系统的要求无限次调用。在实例化和销毁这些对象上浪费时间将会影响绘图性能。
3.使用代码中的双缓冲来减少刷新屏幕上的图形时可能出现的闪烁现象。
阅读全文