枚举 class 属性然后指定 属性 的简单方法

Easy way to enumerate class properties and then specify that property

我有一个 windows 表单,我希望用户指定画笔的颜色 system.drawing.brush,然后我的应用程序在本机使用它。有很多画笔颜色,我想知道是否可以枚举所有可能的颜色组合?

然后我可以用它们填充组合框。那么第二部分将是以编程方式指定画笔 属性 而无需进行查找 table。

最好的选择是像 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);