我可以将DefaultValue设置为Color.Empty吗?

时间:2014-07-23 20:08:47

标签: c#

以下内容始终在Designer.cs文件中生成显式属性赋值:

[Category("Appearance"), DefaultValue(typeof(Color), "Empty")]
public Color PropertyBackColor
{
    get { return propertyBackColor; }
    set { propertyBackColor = value; }
}

Color propertyBackColor = Color.Empty;

我在Designer.cs文件中得到了这个,好像设计师不了解DefaultValue。

this.textBox2.PropertyBackColor = System.Drawing.Color.Empty;

它适用于任何实际颜色。只是不适用于Color.Empty。

1 个答案:

答案 0 :(得分:-1)

默认值可以通过ShouldSerialize方法定义。请参阅MSDN上的Defining Default Values with the ShouldSerialize and Reset Methods

示例代码作为此案例的示例(改编自上面的link

    [Category("Appearance")]
    public Color PropertyBackColor
    {
        get { return propertyBackColor; }
        set { propertyBackColor = value; }
    }

    Color propertyBackColor = Color.Empty;

    public bool ShouldSerializePropertyBackColor()
    {
        return propertyBackColor != Color.Empty;
    }
    public void ResetPropertyBackColor()
    {
        propertyBackColor = Color.Empty;
    }

我认为,方法ShouldSerialize和Reset可以是私有的或受保护的。