1.转自:http://blog.chinaunix.net/uid-20476365-id-1942444.html
复合控件是封装在公共容器内的 Windows 窗体控件的集合。这种控件有时称为“用户控件”。包含的控件称为“构成控件”。
复合控件包含与每个包含的 Windows 窗体控件相关联的所有固有功能,允许您有选择地公开和绑定它们的属性。复合控件还提供了大量的默认键盘处理功能,您不需要任何额外的开发。
====================================
自定义控件
创建控件的另一种方法是通过从 Control 继承从头开始创建一个控件。Control 类提供控件所需的所有基本功能(包括鼠标和键盘处理事件),但不提供控件特定的功能或图形界面。
与通过从 UserControl 或现有 Windows 窗体控件继承创建控件相比,通过从 Control 类继承创建控件需要耗费更多的心思和精力。由于大量的实现将留给您进行,因此,您的控件可以具有比复合控件或扩展控件更大的灵活性,而且您可以使控件完全满足自己的需要。
2.转自:http://blog.sina.com.cn/s/blog_3f39ffb50100d5hu.html
WinForm_关于用户控件和自定义控件
1.WinForm中的用户控件继承自 UserControl,主要用于开发 Container 控件,Container控件可以添加其他Controls控件
自定义控件继承自 Control,主要用于开发windows控件的最基本的类,比如 Text,Button 控件
2.生成的用户控件添加到工具箱后默认使用一个齿轮状的图标,以下为设置自定义图标的方法:
20090724 (入题)最近用到自定义圆角按钮,由于系统按钮为标准矩形,因而这里需要自定义按钮
新建项目--新建项(自定义控件)
继承 Button 类
重写 OnPaint() 方法,使用 GraphicsPath 获取一个带有圆角的矩形路径,进行一些列填充后将当前对象的区域,也就是 Region 属性赋值为带圆角的矩形路径。
工作遇到的问题主要在于〔设计时属性〕
步骤为:
1.创建私有变量;
2.创建属性;
3.为属性添加〔设计时属性〕,诸如:
[Browsable(true)]
[Category("自定义属性")]--用于在控件属性设计器中显示,此设置为对属性进行分类。由于默认不存在这个分类项,则会新建。若不设置此属性,默认新增“杂项”分类项,并将属性置于其下若要将属性置于预定的分类中,引号中间填入默认分类项即可,比如: [Category("外观")],注意这里不区分中英文,“外观”分类项同样可以写作“Appearance”。
[Description("属性描述")]--此属性用于描述属性
[DefaultValue()]--属性默认值,这里的值包含多数数据类型,但是没有枚举类型,比如 Color 类型,这时要使用第二个重载,包括两个参数,第一个为目标类型,第二个为值的字符串表示,例如:
[DefaultEvent()]--属性默认事件
...
注意:
使用枚举的属性:
1.定义枚举
2.使用枚举定义私有变量和属性访问器
这样,在设计器中,此属性将提供枚举值的选项
以下是关于 Color 类的枚举属性