我希望有一个所有颜色的列表,当我选择一种颜色时,我需要从它的名字中获取颜色。
我使用这种方法获得颜色列表...
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 :(得分:0)
我不确切知道紧凑框架支持什么,但在“完整”C#中,PropertyInfo的每个实例都有一个属性“Name”和一个方法“GetValue”,您可以使用它来查找仅给出名称的颜色
类似的东西(如果允许LINQ)
Color color = (Color)propInfos.Single(pi => pi.Name == colorName).GetValue(null);
(请注意,如果找不到colorName,.Single
会抛出异常。)