c#通过另一个连接的字符串和变量调用字符串名称
本文关键字:字符串 变量 调用 另一个 连接 | 更新日期: 2023-09-27 17:51:20
我一直在寻找这个很多,但我没有找到任何接近我需要的东西,也许这是一些简单的东西,但我得到的东西只是如何使用"+"或Format过程连接字符串。
我想知道的是如何通过改变另一个字符串来调用包含颜色的HEX格式的字符串。
这里和示例:
我命名了以下字符串:
string Color_Option1 = "#FF17868B";
string Color_Option2 = "#FFFFFFFF";
string Color_Option3 = "#FF000000";
这个变量:
private static string m_optionclicked = "";
public static string OptionClicked
{
get { return m_optionclicked; }
set { m_optionclicked = value; }
}
然后我有3个按钮和一个TextBlock,当一个按钮被点击时,他们把一个值放在"OptionClicked",例如:
OptionClicked = "Option2";
所以根据点击的按钮我想改变TextBlock的背景颜色,像这样:
TextBlock.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("Color_" + OptionClicked));
但我得到和错误每次在背景线上,有人知道我怎么能调用字符串称为"Color_Option2"与类似的语法吗?
我已经确保OptionClicked的值"Option2",它实际上是有效的,如果我写"Color_Option2",而不是连接字符串和变量。
顺便说一句,这是一个简化的例子,我有很多按钮,文本块和颜色,所以做一连串的"如果"或一个接一个地决定会让我的生活很痛苦。
如果您想通过反射来做到这一点,您可以有一个具有公共字段的类,例如
class ColorClass
{
public string Color_Option1 = "#FF17868B";
public string Color_Option2 = "#FFFFFFFF";
public string Color_Option3 = "#FF000000";
}
然后获取值,
ColorClass colorClass = new ColorClass();
(string)typeof(ColorClass).GetField("Color_" + OptionClicked).GetValue(colorClass);
解决这个问题的另一种方法是,正如David L在评论中所说,只需创建一个字典,将键作为您的字符串变量名称。