2014-07-23 37 views
2

下总是产生在我Designer.cs文件明确的属性赋值:我可以将DefaultValue设置为Color.Empty?

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

Color propertyBackColor = Color.Empty; 

我在Designer.cs文件得到这个仿佛是设计师不理解默认值。

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

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

+0

什么不行?例外? IIRC文本框不支持透明颜色。我猜空白颜色也落入透明状态.. –

+0

设计人员不应该将属性初始化为它在Designer.cs文件中的默认值。 –

+5

尝试使用''“'而不是'”Empty“' - 如果它有效,我会解释为什么:) –

回答

-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和复位可以是私有的或受保护的。

相关问题