日期:2014-05-18  浏览次数:21044 次

如何通过反射获取Color结构内所定义的所有颜色??
上网查询到通过以下调用,但不知道如何取出Color值存入我定义的Color数组???

 Type t = typeof(Color);
 PropertyInfo[] ps = t.GetProperties();

------解决方案--------------------
Type t = typeof(Color); 
PropertyInfo[] ps = t.GetProperties();
ArrayList arr=new ArrayList();
foreach(color i in ps)
arr.add(i);
------解决方案--------------------
有两种方式可以实现。

第一种就是反射,像楼主一样,不过需要给定BindingFlags,指定反射拿到color类的public的静态成员就行了。

推荐使用的二种方式。

系统有个枚举System.Drawing.KnownColor。 它可以列举出windows定义的所有已知名字的color。
Color类有个静态方法FromKnownColor()。 可以根据给定的KnownColor实例构造一个Color实例。

代码类似下面的(没有编译器,我随手写的):

foreach( KnownColor nc in Enum.GetValues(typeof(KnownColor)) )
{
Color color = Color.FromKnownColor(nc);

//// TODO with color
//......


}