首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

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

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


}

热点排行