在前几节中我们演示了怎样进行用户控件开发大家可能对用户控件中的一些属性的基本设置还存在疑惑这节我们共同学习下用户控件的基本属性设置
所谓基本属性设置就是我们常常看到控件在属性设计器中可以对属性进行设置有些属性在设计中具有默认值有些在属性设计器中会弹出一个编辑器供用户选择值
这节内容
简单数据类型的属性设置
复杂数据类型的属性设置
简单数据类型的属性设置
简单数据类型就是NET中常见的类型例如字符串整型浮动型这些基本数据类型
我们看下这些基本属性
Browsable指示该属性是否可以在属性设计器中显示如果TRUE则显示FALSE则不显示
Category表示属性的分类
Description表示属性的描述信息
DefaultValue表示属性的默认值
下面我们定义了一个用户控件并自定义了一个属性SecondText代码如下
public partial class UCLabel : UserControl { public UCLabel() { InitializeComponent(); } private string _sText=Helloworld;//初始值 /// <summary> /// Browsable表示该属性是否显示在设计器中TRUE为显示 /// </summary> /// Description表示对属性的描述信息 /// Category表示该属性在属性设计器中的分类 [Browsable(true)] [Category(文本)] [Description(第二文本)] [DefaultValue(新浪微博)]//默认值 public string SecondText { get { return _sText; } set { _sText = value; } } }
从上面的图片中我们可以看到各个属性在属性设计器中对应的项
在这里有一点要说明我们把SecondText的初始值设为HelloWorld把它的默认值设为新浪微博我们说下初始值和默认值的区别
初始值是属性定义时候赋的值当把用户控件拖到窗体上后默认情况下显示的初始值
一个属性的默认值是非加粗显示其他值都是加粗显示的
如果想恢复某个属性的默认值只需要右键单击该属性选择重置就可以恢复属性的默认值
复杂属性的基本设置
复杂类型主要是指引用类型例如我们自定义的类或者系统原有的类复杂属性的设置主要是默认值的设置
复杂属性的默认值设置不能再使用DefaultValue属性需要使用Reset方法
如果想判断当前属性是否使用的是默认值可以使用ShouldSerialize属性名来判断当然这两个方法都需要我们自己来实现
如下代码定义了一个颜色复杂属性
//定义属性的初始值为红色 private Color _sColor = ColorRed; [Category(颜色)] [Description(第二颜色)] public Color SecondColor { get { return _sColor; } set { _sColor = value; } } /// <summary> /// 用于判断当前属性是否在使用默认值 /// </summary> /// <returns></returns> public bool ShouldSerializeSecondColor() { return _sColor != ColorBlue; } /// <summary> /// 用于设置属性的默认值为蓝色 /// </summary> public void ResetSecondColor() { _sColor = ColorBlue; }
这样我们在属性设计器中就可以通过重置命令设置默认颜色为蓝色