2012-02-23 86 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。)