如何使用自定义DefaultBackColor创建UserControl?

时间:2009-07-27 10:53:39

标签: c# .net winforms user-controls

当我右键单击属性网格中的自定义UserControl的BackColor属性,然后单击重置,我希望BackColor属性更改为(例如)Color.LightGreen ,并且属性值显示为非粗体,表示它是默认值。

目前,我知道我可以这样做:

public override void ResetBackColor() {
    BackColor = Color.LightGreen;
}

在重置时将其设置为LightGreen。但它仍然在属性网格中显示粗体,表示当前值不是默认值。

我注意到Control类有一个静态只读属性DefaultBackColor。不幸的是,由于它是静态的,我无法覆盖它。

有没有办法获得我想要的所有功能?

1 个答案:

答案 0 :(得分:7)

您可以使用DefaultValue属性

来实现此目的
public UserControl1()
{
    InitializeComponent();
    this.BackColor = Color.LightGreen;
}

[DefaultValue(typeof(Color), "LightGreen")]
public override Color BackColor
{
    get
    {
        return base.BackColor;
    }
    set
    {
        base.BackColor = value;
    }
}