繁体   English   中英

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

[英]C# How to set the default value of an object in the propertygrid?

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

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

现在,在设计器中,我想将MyButtonVisible属性设置为false。 默认将Visible属性设置为true,但是在这种情况下,我希望它为false。

我怎样才能做到这一点?

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

这是一个例子:

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

MyButton类中, 删除 尝试覆盖Visible属性添加的所有内容,并添加以下代码:

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

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

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

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

希望这会起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM