C# 列出所有系统颜色
在Windows.Forms中,我需要创建一个接受任何颜色的程序,并尝试找到与之对应的系统颜色 我不知道如何循环使用System.Drawing.SystemColors类的所有颜色-它是一个类,不是枚举或列表 我怎样才能做到这一点(某种反思?)怎么样C# 列出所有系统颜色,c#,gdi+,systemcolors,C#,Gdi+,Systemcolors,在Windows.Forms中,我需要创建一个接受任何颜色的程序,并尝试找到与之对应的系统颜色 我不知道如何循环使用System.Drawing.SystemColors类的所有颜色-它是一个类,不是枚举或列表 我怎样才能做到这一点(某种反思?)怎么样 public static Dictionary<string,object> GetStaticPropertyBag(Type t) { const BindingFlags flags = BindingFlags.St
public static Dictionary<string,object> GetStaticPropertyBag(Type t)
{
const BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
var map = new Dictionary<string, object>();
foreach (var prop in t.GetProperties(flags))
{
map[prop.Name] = prop.GetValue(null, null);
}
return map;
}
怎么样
public static Dictionary<string,object> GetStaticPropertyBag(Type t)
{
const BindingFlags flags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
var map = new Dictionary<string, object>();
foreach (var prop in t.GetProperties(flags))
{
map[prop.Name] = prop.GetValue(null, null);
}
return map;
}
我做了点什么
var typeToCheckTo = typeof(System.Drawing.Color);
var type = typeof(System.Drawing.SystemColors);
var fields = type.GetProperties(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public).Where(p => p.PropertyType.Equals(typeToCheckTo));
foreach (var field in fields)
{
Console.WriteLine(field.Name + field.GetValue(null, null));
}
我做了点什么
var typeToCheckTo = typeof(System.Drawing.Color);
var type = typeof(System.Drawing.SystemColors);
var fields = type.GetProperties(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public).Where(p => p.PropertyType.Equals(typeToCheckTo));
foreach (var field in fields)
{
Console.WriteLine(field.Name + field.GetValue(null, null));
}
事实上,通过反思,让我看看我是否能做些什么。你可能想看看这里:或者这里:还有一个:希望它有帮助。“相应的系统颜色”-你只能使用它们?使用或任何其他
颜色
转换,您可以使用任何现有颜色…事实上,通过反射,让我看看是否可以制作一些东西。您可能想看看这里:或这里:还有一个:希望有帮助。“相应的系统颜色”-您只能使用这些颜色?使用或任何其他颜色
转换,您可以使用任何现有颜色…谢谢,我已经在使用上述解决方案,但是,关于这一个,只有一个问题:对我来说,他似乎正在使用所有的标准颜色,而不是特殊的系统颜色(如“渐变激活选项”、“灰色文本”、“按钮面”等)我需要什么?我现在使用linq检查所有System.Drawing.SystemColors
,并且只检查类型为System.Drawing.Color
的静态属性。因此,您需要使用System.Linq添加代码>在您的文档顶部。谢谢,我已经在使用上面的解决方案,但是,关于这个问题,只有一个问题:对我来说,看起来他正在使用所有的标准颜色,而不是特殊的系统颜色(如“GradientActivityOption”、“GrayText”、“ButtonFace”等)我需要什么?我现在使用linq检查所有System.Drawing.SystemColors
,并且只检查类型为System.Drawing.Color
的静态属性。因此,您需要使用System.Linq添加代码>位于文档顶部。