2014-07-23 39 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和復位可以是私有的或受保護的。

相關問題