【问题标题】:C# Calling a String name by another concatenated string and variableC# 通过另一个连接的字符串和变量调用字符串名称
【发布时间】:2016-10-29 22:37:08
【问题描述】:

我一直在寻找这个,但我没有找到任何接近我需要的东西,也许它很简单,但我得到的只是如何使用“+”或格式化过程。

我想知道的是如何通过更改另一个字符串来调用包含颜色的 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”而不是连接字符串和变量,它实际上可以工作。

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

提前致谢。

【问题讨论】:

  • 似乎您可能需要考虑将此信息存储在字典中,以便根据选项名称轻松检索。此外,如果您想要任何类型的真实答案,您可能需要考虑包含错误。
  • 对不起,弹出的错误是“FormatException 未处理-PresentationCore.dll 中发生'System.FormatException' 类型的未处理异常”但我认为这是因为我在调用字符串错误的方式。而且我是 C# 的新手,但我搜索的关于在字典中存储信息的内容似乎与我存储信息的方式相同,但问题仍然在于如何调用它。我可能错了,如果我错了,请告诉我,我仍然想学习更多 C#

标签: c# wpf string concatenation


【解决方案1】:

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

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);

解决这个问题的另一种方法是正如大卫 L 在 cmets 中所说,只需创建一个字典,其中键作为字符串变量名。

【讨论】:

  • 这确实有效,尽管为此产生反射开销是一种耻辱。
  • 非常感谢,它成功了,以防万一其他人想尝试它,我就是这样做的。 ColorClass colorClass = new ColorClass(); / TextBlock.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom((string)typeof(ColorClass).GetField("Color_" + OptionClicked).GetValue(colorClass)));虽然这似乎需要做很多工作,但在 VB 中更容易。
猜你喜欢
  • 2020-09-08
  • 1970-01-01
  • 2020-06-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2021-12-24
  • 2020-05-05
  • 1970-01-01
相关资源
最近更新 更多