我写了一个自定义的控件,里面有一个属性MyColor,把它的默认值设为Yellow,控件的全部代码如下图:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public override Color BackColor
{
get { return base.BackColor; }
// set { base.BackColor = value; }
}
private Color _color; [DefaultValue("Yellow")]
public Color MyColor
{
get { return _color; }
set { _color = value; }
} protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
} }可是在把编译好的控件,拖到Form上的话,MyColor显示的属性并不是Yellow的,
而我用下面的代码:
AttributeCollection attr = TypeDescriptor.GetProperties(this.userControl11)["MyColor"].Attributes;
DefaultValueAttribute myAttribute = (DefaultValueAttribute)attr[typeof(DefaultValueAttribute)];
MessageBox.Show(myAttribute.Value.ToString());
弹出的默认值却是Yellow,不知道是什么原因。这个属性的默认值到底在什么地方有用。难道不是用在第一次显示的默认值吗?
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public override Color BackColor
{
get { return base.BackColor; }
// set { base.BackColor = value; }
}
private Color _color; [DefaultValue("Yellow")]
public Color MyColor
{
get { return _color; }
set { _color = value; }
} protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
} }可是在把编译好的控件,拖到Form上的话,MyColor显示的属性并不是Yellow的,
而我用下面的代码:
AttributeCollection attr = TypeDescriptor.GetProperties(this.userControl11)["MyColor"].Attributes;
DefaultValueAttribute myAttribute = (DefaultValueAttribute)attr[typeof(DefaultValueAttribute)];
MessageBox.Show(myAttribute.Value.ToString());
弹出的默认值却是Yellow,不知道是什么原因。这个属性的默认值到底在什么地方有用。难道不是用在第一次显示的默认值吗?
1.决定是否在属性窗口中标签为粗体.
2.运行时是否读取属性.你可以在构造函数中初始化值为Color.Yellow.
1.决定是否在属性窗口中标签为粗体.
2.运行时是否读取属性.你可以在构造函数中初始化值为Color.Yellow.