1.WinForm中的用户控件继承自 UserControl,主要用于开发 Container 控件,Container控件可以添加其他Controls控件
自定义控件继承自 Control,主要用于开发windows控件的最基本的类,比如 Text,Button 控件
2.生成的用户控件添加到工具箱后默认使用一个齿轮状的图标,以下为设置自定义图标的方法:
(如果是在类库项目中生成用户控件,默认没有资源文件,需要手动添加资源文件,此时会在项目文件下生成 Resources 文件夹以及 Resource1.resx 文件。双击 Resource1.resx 文件,选择添加资源。此时在 Resources 文件夹下可以找到添加的图标文件,右击图标文件,选择属性,将生成操作项设为嵌入的资源)
1> 准备16像素宽高,256色的BMP图片,并设置图标文件的BuildingAction(生成操作)属性为嵌入的资源
2> 修改用户控件类,引用资源文件的图标文件:
(用户控件类名为: myControl1)
(System.Drawing.ToolboxBitmap)
在类体上方添加 [ToolboxBitmap(typeof(myControl1),"Resources.B1.ico")]
3> 然后生成解决方案,在 bin 目录下即可找到 myControl1.dll 文件
4> 将 dll 文件添加到工具箱中即可发现用户控件的图标已经为自定义的图标
20090724 (入题)最近用到自定义圆角按钮,由于系统按钮为标准矩形,因而这里需要自定义按钮
新建项目--新建项(自定义控件)
继承 Button 类
重写 OnPaint() 方法,使用 GraphicsPath 获取一个带有圆角的矩形路径,进行一些列填充后将当前对象的区域,也就是 Region 属性赋值为带圆角的矩形路径。
工作遇到的问题主要在于〔设计时属性〕
步骤为:
1.创建私有变量;
private string _name;
2.创建属性;
public string Name
{
get;
set;
}
3.为属性添加〔设计时属性〕,诸如:
[Browsable(true)]
[Category("自定义属性")]--用于在控件属性设计器中显示,此设置为对属性进行分类。由于默认不存在这个分类项,则会新建。若不设置此属性,默认新增“杂项”分类项,并将属性置于其下若要将属性置于预定的分类中,引号中间填入默认分类项即可,比如: [Category("外观")],注意这里不区分中英文,“外观”分类项同样可以写作“Appearance”。
[Description("属性描述")]--此属性用于描述属性
[DefaultValue()]--属性默认值,这里的值包含多数数据类型,但是没有枚举类型,比如 Color 类型,这时要使用第二个重载,包括两个参数,第一个为目标类型,第二个为值的字符串表示,例如:
[DefaultValue(typeof(Color), "#000000")]
public Color TForeColor
[DefaultEvent()]--属性默认事件
...
注意:
属性访问器必须使用 get; set; 的格式才能在属性设计器中显示。并且,若属性访问器使用这种方式,必须 get 和 set 同时使用,不能只写某一个。
若自定义控件源文件与引用控件的项目在同一终端上,在更新了自定义控件的源码后,保存(或重新生成)后,在引用控件的项目中,通过重新生成能够得到最新修改后的自定义控件。
使用枚举的属性:
1.定义枚举
public enum WeekDay
{
Monday,
Tuesday,
Wednesday,
Thurday,
Friday,
Thursday,
Sunday
}
2.使用枚举定义私有变量和属性访问器
private WeekDay _today;
public WeekDay Today
{
get;
set;
}
这样,在设计器中,此属性将提供枚举值的选项
以下是关于 Color 类的枚举属性