如何使用string作为标签id c#

时间:2017-04-23 06:44:43

标签: c# winforms

我想更改标签的文字(i) 当'i'在计时器中增加时,label'i'的文本将会改变

int i =0;  
private void timer1_Tick(object sender, EventArgs e)
    {
        string label = "label" + i.ToString();
        Control l = FindControl(label);
        Label labeli = (Label)l;
        labeli.Text = "somthing";
        i++;
    }

但它显示错误

  

“名称'FindControl'在当前上下文中不存在”

代码是否错误或有其他方法可以执行此操作?

2 个答案:

答案 0 :(得分:2)

您可以使用LINQ:

Label label = Label label = this.Controls
                    .OfType<Label>()
                    .FirstOrDefault(l => l.Name == labelName);

if (label != null) label.Text = "Something";

或遍历以label:

开头的所有标签
var  labels = this.Controls.OfType<Label>().Where(l => l.Name.StartsWith("label"));

foreach (Label label in labels) {
      label.Text = "somthing";
}

或者如果你想找标签1-6:

var labels = Enumerable
    .Range(1, 6)
    .Select(i => 
        this.Controls.OfType<Label>().Where(l => l.Name == "label" + i));

答案 1 :(得分:0)

你可以试试这样的事情

var lbl = this.Controls.Find(label, true).FirstOrDefault() as Label;

然后你应该检查lbl是否为空,并为它的Name属性赋值。

if(lbl != null)
{
    lbl.Text = "something";
}