【问题标题】:It's possible convert string into Label name? [duplicate]可以将字符串转换为标签名称吗? [复制]
【发布时间】:2018-09-26 19:59:28
【问题描述】:

使用 C# 和 Windows 窗体,我想使用 Label 的名称作为另一个函数的参数,如下所示:

 startBox(label_box, "11", Color.Red);

startBox的定义:

  private void startBox(Label label, string text, Color color) {
        label.BackColor = color;
        label.Visible = true;
        label.Enabled = true;
        label.Text = text;
    }

但是,有没有办法将string 转换为Label 的名称? 在我的例子中,label_boxstring

ps¹。我需要这样做,因为我有 N Labels 并且名称应该由用户输入。

ps²。要使用string 调用方法,我使用了MethodInfo

编辑: 使用Controls 的解决方案不适用。在我的例子中,如果字符串是调用函数的标签之一的名称,则给出一个字符串作为输入。

谢谢,对于英文的拼写错误,我们深表歉意。

【问题讨论】:

  • winforms? wpf?你用的是什么技术?
  • windows 窗体,问题已编辑 :)
  • @JohnnyMopp 我知道Labels 的名称(控制它只是为了获取所有控制)。我需要的是获取一个字符串作为输入并检查具有该名称的标签,然后调用该函数,thks :)
  • 查看骗局中的第一个答案。在我看来,这正是您所需要的:Label label = this.Controls.Find(label_box, true).FirstOrDefault() as Label; 或者更简单地说:Label label = this.Controls[label_box] as Label(但您需要确保存在且不嵌套)。

标签: c# winforms


【解决方案1】:

因此您希望能够对标签进行操作,其中标签的名称作为输入提供。我会用字典来做到这一点

var lDict = new Dictionary<string, Label>();
lDict["l1"] = Label1;
lDict["l2"] = Label2;
....

然后

void Func(string labelName)
{
  var label = lDict[labelName];
  label.Visible = true;
  ...
}

你可以做各种复杂的反思,但感觉有点矫枉过正

【讨论】:

    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多