2009-09-12 51 views
1

我有這樣的事情:爲什麼在嘗試將公共方法的默認值設置爲顏色時出現錯誤消息?

[Description("Sets the color."), 
Category("Values"), 
DefaultValue(Color.White), 
Browsable(true)] 
public Color MyColor 
{ 
    get 
    { 
     return myColor; 
    } 
    set 
    { 
     myColor = value; 
    } 
} 
private Color myColor = Color.White; 

我得到一個錯誤在這行:

DefaultValue(Color.White), 

如果該值是一個布爾值,有是沒有問題的,但試圖設置時它以我得到的顏色: 屬性參數必須是一個常量表達式,屬性參數類型的表達式或數組創建表達式

任何人都可以識別問題嗎?

+0

有沒有辦法使用DefaultValue字段設置顏色? – stormist

+0

謝謝大家! – stormist

回答

5

Color.White不是一個常量表達式;它是一個 readonly字段 static property 並涉及實例化。

編輯

爲了您的信息,以另一種方式設置Color的默認值可能是這樣的:

[DefaultValue(typeof(Color), "White"] 
public Color MyColor 
{ ... } 

1. Ed Swangren在他的回答指出了這一點

0

錯誤描述說這一切:) 嘗試把那裏的顏色值作爲stri (平均'常量表達')。

PS。在你的代碼中有一個默認值設置爲私有成員,所以你可以跳過這個屬性。

2

因爲Color結構中的預定義顏色對象不是常量,所以它們是隻有get訪問器的靜態屬性。

public static Color Transparent { get; } 

這行實際上通過使用KnownColor枚舉值來構建它返回一個新的Color對象:

public static Color Transparent 
{ 
    get { return new Color(KnownColor.Transparent); } 
} 

所以,你可以看到,有任何關於調用該方法不變,這就是您收到錯誤的原因。

相關問題