C#通过另一个连接的字符串和变量调用String名称

时间:2016-06-27 19:42:45

标签: c# wpf string concatenation

我一直在寻找这个,但我找不到任何我需要的东西,也许它很简单,但我得到的东西只是如何使用" +"连接字符串或格式化程序。

我想知道的是如何通过更改另一个字符串来调用包含颜色的HEX格式的字符串。

继承人和榜样:

我已经命名了以下字符串:

"hello",
"how many questions?",
"3",
"question 1?",
"A",
"question 2?",
"B",
"question 3?",
"C",
"your answers were: A,B,C"

这个变量:

string Color_Option1 = "#FF17868B";
string Color_Option2 = "#FFFFFFFF";
string Color_Option3 = "#FF000000";

然后我有3个按钮和一个TextBlock,当点击一个按钮时,他们会在" OptionClicked"上放置一个值,例如:

private static string m_optionclicked = "";
        public static string OptionClicked
        {
            get { return m_optionclicked; }
            set { m_optionclicked = value; }
        }

因此,根据单击的按钮,我想更改TextBlock的背景颜色,如下所示:

OptionClicked = "Option2";

但我每次都在后台行得到错误,有没有人知道如何调用名为" Color_Option2"具有类似的语法?

我确保OptionClicked的值为" Option2"它实际上有效,如果我写" Color_Option2"而不是连接字符串和变量。

顺便说一下,这是一个简化的例子,我有很多按钮,文本块和颜色,所以制作一个“如果”或“逐个”确定的链条会让我的生活变得悲惨。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果你想通过反思来做到这一点,你可以拥有一个包含公共字段的类,例如

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在评论中说,只需创建一个字典,并将密钥作为字符串变量名称。