文章分类 - C#编程
[导入]解决自绘制控件闪烁的问题
摘要:记得以前用VC开发自绘制控件的时候,遇到的一个很烦人的问题就是控件在paint的时候总是出现flicker(闪烁)。原因其实很简单,就是你一点一点的向设备上下文环境绘制,中间还有很多逻辑运算,结果就像是动画了,不过计算机的速度比较快,所以呈现在我们面前的闪烁,而闪烁的出现大大的影响的客户的使用体验。后来一个程序员开发了一个后来广为流传的类MemDC,这个类首先创建一个兼容的设备上下文环...
阅读全文
[导入]WinForm控件开发总结(二)------使用和调试自定义控件
摘要:在上一篇文章里我们创建了一个简单的控件FirstControl,现在我来介绍一下怎么使用和调试自己的控件。我希望将过程写的尽可能的详细,让想学习控件开发的朋友容易上手,高手们见谅。 在同一个solution里添加一个Windows Application工程(在Solution Explorer里右键点击CustomControlSample solution选择Add->N...
阅读全文
[导入]WinForm控件开发总结(四)-----控件属性的串行化
摘要:前一篇文章介绍了常用的设计时Attribute。其中BrowsableAttribute,CategoryAttribute,DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不...
阅读全文
[导入]WinForm控件开发总结(六)-----控件属性类型转换器代码详解
摘要:在上一篇文章,我为控件添加一个一个复杂属性,并且为这个属性的类型的编写了一个类型转换器,现在我们来看看这个类型转换器的代码,并解释一下这些代码的意义。 要实现一个类型转换器,我们必须要重写(override)四个方法: CanConvertFrom()――根据类型参数进行测试,判断是否能从这个类型转换成当前类型,在本例中我们只提供转换string和Instanc...
阅读全文
[导入]WinForm控件开发总结(十)-----为属性设置默认值
摘要:本系列的前面几篇文章讲解了如何来定义属性以及更有效的编辑属性,接下来我要讲一下控件属性的默认值。如果我们希望自己开发的控件更易于被其它开发者使用,那么提供默认值是非常值得的。 如果你为属性设定了默认值,那么当开发者修改了属性的值,这个值在Property Explorer中将会以粗体显示。VS为属性提供一个上下文菜单,允许程序员使用控件把值重置为默认值。当VS进行控件的串行化...
阅读全文
[导入]WinForm控件开发总结(十一)-----调试控件的设计时行为
摘要:前面的一些文章绝大部分都是要讲控件的设计时的行为,既然涉及到这么多的设计时行为的代码编写,那么就有必要就一下如何来调试控件的设计行为。 调试控件的设计时行为和调试DLL的方式非常的相似,因为DLL是不能够单独运行的,而一般的控件也会在一个DLL里。当然如果你不考虑类的可复用性而把控件写在一个Windows Application里面也无可厚非,这样调试倒也变的简单了。但是我...
阅读全文
[导入]如何设置Winform控件的ClientRectangle
摘要:最近学习制作WinForm控件,自己动手写控件的时候才发现System.Windows.Forms.Control 竟然没有提供默认的border绘制。记得以前用API做控件的时候,只需要设置空间窗口的WS_BORDER 风格就可以。遍寻无方,只有自己绘制了,这里有出现一个,如果border在客户区,那么在OnPaint方法里不得不每次都要考虑Border所占用的区域,而且,如果从这...
阅读全文
[导入]WinForm控件开发总结(一)------开篇
摘要:我本人不是专业的控件开发人员,只是在平常的工作中,需要自己开发一些控件。在自己开发WinForm控件的时候,没有太多可以借鉴的资料,只能盯着MSDN使劲看,还好总算有些收获。现在我会把这些经验陆陆续续的总结出来,写成一系列方章,希望对看到的朋友有所帮助。今天我来开个头。 其实开发WinForm控件并不是很复杂,.NET为我们提供了丰富的底层支持。如果你有MFC或者API图形界...
阅读全文
[导入]WinForm控件开发总结(三)------认识WinForm控件常用的Attribute
摘要:在前面的文章里我们制作了一个非常简单的控件。现在我们回过头来看看这些代码透露出什么信息。 这个类是直接从Control类派生出来的,自定义控件都是直接从Control类派生出来的。这个类定义了一个属性TextAlignment,用来控制文本在控件中显示的位置: [ Category("Alignment"), Descr...
阅读全文
[导入]WinForm控件开发总结(五)-----为控件的复杂属性提供类型转换器
摘要:摘要: 上一篇文章我已经介绍了TypeConverterAttribute元数据的作用,本文将通过代码向你展示具体的实现。在这个例子中,我要给控件添加一个复杂的属性,这个属性对这个控件没有什么功用,纯粹是为了演示,有些牵强附会了。 现在在前一篇文章中的创建的控件代... 阅读全文 纶巾客 2006-12-11 22:55 发表评论 文章来源:http://www...
阅读全文
[导入]WinForm控件开发总结(七)-----为复杂属性的子属性提供编辑功能
摘要:前面的几篇文章中,我们给控件添加一个复杂的类型Scope,并且给它的类型提供的一个类型转换器,现在我们可以在属性浏览器中编辑它的值,并且它的值也被串行化的源代码里了。但是你有没有发现,在属性浏览器里编辑这个属性的值还是不太方便。因为属性只是“10,200”这种形式的,所以,你必须按照这种格式来修改,一旦格式错误就会引发异常,比如输入一个“10200”。我们期望这个属性的每一子属性都能够...
阅读全文
[导入]制作VS风格的Toolbox控件
摘要:在前些日子里,我写了有十篇关于WinForm 控件的制作教程,在这些教程里使用的例子都十分的简单,并且示例的控件基本没有什么用,是该写一个简单实用的控件的时候了。今天我就来制作一个VS风格的ToolBox工具箱。VS风格的ToolBox和QQ的界面很相似,都是有多个栏目,并且这些栏目可以展开和折叠,当鼠标在某个子栏目上时,可以高亮显示,另外在VS风格的ToolBox中,点击选中项目的...
阅读全文
delegate and encrypt(md5&sha1)
摘要:///委托申明(相当于建了个新类) private delegate string md5Delegate(string str); ///申明委托(对md5进行声明) md5Delegate md5; ///MD5加密类 public class eMd5 { public string md5Encnry(string str) ...
阅读全文
浙公网安备 33010602011771号