C#如何在propertygrid中设置对象的默认值?

时间:2011-01-07 14:41:34

标签: c# winforms

我有一个继承自Button的对象。此按钮是从TableLayoutPanel继承的对象的属性。该属性称为MyButton

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
**[DefaultValue(??? Something Like Visible = false ???)]**
public CustomButton MyButton
{
    get { return _button; }
    set { _button = value; }
}

现在,在设计器中,我想将Visible的{​​{1}}属性设置为false。默认MyButton属性为true,但在这种情况下,我希望它为false。

我该怎么做?

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

因为您的值不是常量值,所以它不能与DefaultValueAttribute一起使用,因为在编译时需要这些值。相反,您可以忽略DefaultValueAttribute,并且在构造函数中,您可以使用自定义的MyButton实例初始化CustomButton属性,并在其上设置默认属性。这里唯一不规则的是,在属性网格中,属性值将显示为粗体,就像用户已更改它一样。

以下是一个例子:

public YourCustomControlClass()
{
    this.MyButton = new CustomButton { Visible = false; };
}

答案 2 :(得分:1)

在您的MyButton班级, 删除 您添加的任何内容,试图覆盖可见属性添加以下代码:

public MyButton()
{
    this.Visible=false;
}

重建它,然后在表单中添加一个新的Mybutton实例,您可以看到Designer中的visible属性现在设置为False。

答案 3 :(得分:0)

覆盖属性,然后设置默认值:

[DefaultValue(false)]
new public bool Visible
{
  get { return base.Visible; }
  set { base.Visible = value; }
} 

希望这会奏效。