我写了一个自定义的控件,里面有一个属性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,不知道是什么原因。这个属性的默认值到底在什么地方有用。难道不是用在第一次显示的默认值吗?

解决方案 »

  1.   

    DefaultValue真正意义并不是设定控件初始化值. 
    1.决定是否在属性窗口中标签为粗体.
    2.运行时是否读取属性.你可以在构造函数中初始化值为Color.Yellow.
      

  2.   

    DefaultValue真正意义并不是设定控件初始化值. 
    1.决定是否在属性窗口中标签为粗体.
    2.运行时是否读取属性.你可以在构造函数中初始化值为Color.Yellow.