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

Blo*_*ard 2 .net c# user-controls winforms

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

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

public override void ResetBackColor() {
    BackColor = Color.LightGreen;
}
Run Code Online (Sandbox Code Playgroud)

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

我注意到Control该类具有静态只读属性DefaultBackColor.不幸的是,因为它是静态的,我无法覆盖它.

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

Fre*_*örk 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;
    }
}
Run Code Online (Sandbox Code Playgroud)