2012-02-23 81 views
1

我想要一個所有顏色的列表,當我選擇一種顏色時,我需要從它的名稱中獲得該顏色。如何從C#精簡框架中的顏色名稱獲取顏色?

我用這種方法具有顏色列表...

Type colorType = typeof(System.Drawing.Color); 
       // We take only static property to avoid properties like Name, IsSystemColor ... 
       PropertyInfo[] propInfos = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public); 

foreach (var colorInfo in propInfos) 
      { 
// making a list here 
} 

,但我不知道如何從它的名字取色,因爲在緊湊沒有可用Color.FromName()方法框架。

+0

請提供詳細的代碼。 – 2012-02-23 07:32:27

+0

你檢查過'Color.FromKnownColor'嗎?這是你需要的嗎? – V4Vendetta 2012-02-23 07:45:59

+0

自從問了這個問題之後,還有什麼更多的瞭解到了這個問題?我從以前的完整框架項目移植代碼,它所做的一件事是使用「Color.FromName(...)」以逗號分隔的文本行獲取顏色。 – 2012-09-13 18:50:25

回答

0

我不確切知道緊湊框架支持什麼,但在「完整的」C#中,PropertyInfo的每個實例都有一個屬性「Name」和一個方法「GetValue」,您可以使用它來查找僅給出的顏色名稱。

喜歡的東西(如果LINQ是允許的)

Color color = (Color)propInfos.Single(pi => pi.Name == colorName).GetValue(null); 

(請注意,.Single拋出一個異常,如果沒有找到colorName。)