繁体   English   中英

枚举类属性然后指定该属性的简便方法

[英]Easy way to enumerate class properties and then specify that property

我有一个Windows窗体,我希望用户指定画笔system.drawing.brush的颜色,然后由我的应用程序本机使用。 画笔颜色很多,我想知道是否有可能列举所有可能的颜色组合?

然后,我可以用它们填充组合框。 然后,第二部分将是通过编程方式指定画笔属性,而不必执行查找表。

最好的选择是像public enum BrushColor{...}一样声明枚举数,在其中列出所有颜色。 然后,使用此枚举器,您可以自动填充组合框,然后根据用户输入( switch块)确定颜色也很容易。

您可以使用反射获得颜色列表:

Type brushes = typeof(Brushes);
var colorList = from color in brushes.GetProperties() select color.Name;

将这段代码与开头提到的逻辑结合起来,可以实现所需的结果。

有关颜色名称的列表,可以使用Reflection

Type colorType = typeof(System.Drawing.Color);

PropertyInfo[] propInfoList = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public);

var colorNames = propInfoList.Select(c => c.Name);

使用该列表填充您的组合框

然后,一旦用户选择了颜色,就可以使用以下方法创建画笔:

var brushColor = Color.FromName(selectedColorFromCombo);

var brush = new SolidBrush(brushColor);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM