2014-01-16 89 views
-1

現在嘗試這樣:如何創建顏色列表中的所有顏色?

KnownColor[] colors = Enum.GetValues(typeof(KnownColor)); 
      foreach (KnownColor knowColor in colors) 
      { 
       Color color = Color.FromKnownColor(knowColor); 
      } 

但IM在Enum.GetValues(typeof運算(KnownColor))得到錯誤;

錯誤14不能將類型'System.Array'隱式轉換爲'System.Drawing.KnownColor []'。一個明確的轉換存在(你是否缺少演員?)

最後,我想有一個所有顏色的列表裏面,所以我可以用顏色後面的列表。今天我可以製作Color.Red或Color.Green ...我希望我有Form1上的所有顏色的列表,並且我將能夠選擇每次另一種顏色,並且它將更改爲選定的顏色。

回答

2

PSWG解釋什麼是錯與現有的代碼,但我可能只是使用LINQ做這一切一氣呵成:

var colors = Enum.GetValues(typeof(KnownColor)) 
       .Cast<KnownColor>() // Or cast the array 
       .Select(Color.FromKnownColor) 
       .ToList(); 

這會給你一個List<Color> - 這是不是很清楚你的意思是能夠選擇顏色...

+0

Jon Skeet我的意思是,例如在我的代碼中我有這樣的一行:brush.CenterColor = Color.PaleVioletRed;我不想每次都改變顏色,然後運行程序來查看顏色的樣子,然後停止程序再次更改顏色...我想要在運行程序時以及在選擇顏色時使用所有顏色它會在這條線上進行更改,以便在程序運行時實時查看和更改顏色。 – user3200169

+0

@ user3200169如果你只是想在代碼中選擇不同的顏色,簡單地輸入'PaleVioletRed'有什麼問題?我不明白這個''for'-loop的幫助。 –

+0

@ user3200169:你什麼意思是「當我選擇一種顏色」?在調試器中?作爲你的UI的一部分?無論如何,如果你想要一個'List ',這會給你一個...... –

4

你需要轉換陣列:

KnownColor[] colors = (KnownColor[])Enum.GetValues(typeof(KnownColor)); 

或者,你可以離開colorsArray(顯式類型還是隱式類型),因爲你的foreach迭代器的類型是KnownColor。這將工作太:

var colors = Enum.GetValues(typeof(KnownColor)); 
foreach (KnownColor knowColor in colors) 
{ 
    Color color = Color.FromKnownColor(knowColor); 
}