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",而不是连接字符串和变量。

顺便说一句,这是一个简化的例子,我有很多按钮,文本块和颜色,所以做一连串的"如果"或一个接一个地决定会让我的生活很痛苦。

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

如果您想通过反射来做到这一点,您可以有一个具有公共字段的类,例如

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