可以将字符串转换为标签名称吗?

时间:2018-09-26 19:59:29

标签: c# winforms

使用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的解决方案不适用。就我而言,将字符串作为输入,如果字符串是调用该函数的标签之一的名称。

谢谢,抱歉英语的拼写错误。

1 个答案:

答案 0 :(得分:1)

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

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

然后

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

您可以进行各种复杂的反射处理,但是感觉像是过分的