WinForm_关于用户控件和自定义控件

时间:2024-03-06 22:50:43

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")]

WinForm_关于用户控件和自定义控件

  3> 然后生成解决方案,在 bin 目录下即可找到 myControl1.dll 文件

  4> 将 dll 文件添加到工具箱中即可发现用户控件的图标已经为自定义的图标

WinForm_关于用户控件和自定义控件

 

20090724 (入题)最近用到自定义圆角按钮,由于系统按钮为标准矩形,因而这里需要自定义按钮

新建项目--新建项(自定义控件)

继承 Button 类

重写 OnPaint() 方法,使用 GraphicsPath 获取一个带有圆角的矩形路径,进行一些列填充后将当前对象的区域,也就是 Region 属性赋值为带圆角的矩形路径。

WinForm_关于用户控件和自定义控件

工作遇到的问题主要在于〔设计时属性〕

步骤为:

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;

  }

这样,在设计器中,此属性将提供枚举值的选项

WinForm_关于用户控件和自定义控件

 

以下是关于 Color 类的枚举属性

WinForm_关于用户控件和自定义控件

 

轉載自:http://blog.sina.com.cn/s/blog_3f39ffb50100d5hu.html