方法,用于输入字符串,输出颜色对象
本文关键字:颜色 对象 输出 输入 用于 方法 字符串 | 更新日期: 2023-09-27 18:07:58
我试图在c#中创建一个方法,从组合框输入字符串值并返回一个颜色对象。我已经建立了如何使用if/else语句来比较字符串并返回颜色对象,但我想减少我正在编写的代码量。
public static ColorBeingReturned(string TextFromBox)
{
newcolor = Color.TextFromBox;
return newcolor;
}
我确信这些代码都是错误的,但它给了你一个我想要做的想法。下面是if/else语句的代码片段:
public object ColorBeingReturned(string TextFromBox)
{
if (TextFromBox == "Red")
return Color.Red;
else if (TextFromBox == "Blue")
return Color.Blue;
else
return Color.White;
}
基本上,与其写那么多if else语句,我宁愿写几个语句,这样当我给列表添加额外的颜色时,它会更容易过渡
您可以使用Color.FromName(TextFromBox)
方法。
也可以使用反射
public Color ColorBeingReturned(string TextFromBox)
{
return (Color)(typeof (Color)
.GetProperty(TextFromBox,
BindingFlags.Static|
BindingFlags.Public|
BindingFlags.GetProperty))
.GetValue(null, null);
}
为您的combo-box
添加有效的颜色名称,并使用
Color.FromName();
的例子:
Color red = Color.FromName("Red");
对于使用有效颜色名称填充组合框,请使用:
comboBox1.DataSource = Enum.GetValues(typeof(KnownColor));
如果这里的问题是有很长的if/else
语句,它很容易通过使用字典来解决。
var textVsColor = new Dictionary<string,Color>();
textVsColor["Red"] = Color.Red;
textVsColor["Green"] = Color.Green;
...
和后面的
代替长if/else
public object ColorBeingReturned(string textFromBox)
{
var color = dfault(Color);
textVsColor.TryGetValue(textFromBox, out color);
return color;
}
如果您需要支持多语言环境,则在需要基于UI当前语言的字符串的情况下,这是一种很好的方法。