读书人

怎么通过反射获取Color结构内所定义的

发布时间: 2012-02-09 18:22:27 作者: rapoo

如何通过反射获取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
//......


}

读书人网 >C#

热点推荐