枚举 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);
我有一个 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);