使用数组之类的标签

时间:2015-05-26 10:13:00

标签: c# asp.net label

我正在使用c#在asp.net中使用winform应用程序。我在设计模式下创建的winform上有10个标签,名为Label0到Label9。现在我想根据我在程序执行过程中获取的数据一次更改所有标签的Text属性。 我想做这样的事情:

for (int i = 0; i < 10; i++)
{
Label[i].Text = "Hello, this is label: "+ i.ToString();
}

现在,当然这不起作用。但是怎么做呢?我怎样才能像在数组中那样调用标签?如果不可能,那么什么是我的问题的最佳替代解决方案?

2 个答案:

答案 0 :(得分:3)

如果你在谈论WinForms,那么你可以这样做:

private void Form1_Load(object sender, EventArgs e)
{
    // Form1_Load is just sample place for code executing
    for (int i = 1; i < 10; i++)
    {
        var label = Find<Label>(this, "label" + i);
        label.Text = "Hello, this is label: " + i.ToString();
    }

}

private T Find<T>(Control container, string name)
    where T : Control
{
    foreach (Control control in container.Controls)
    {
        if (control is T && control.Name == name)
            return (T)control;
    }

    return null;
}

此代码将搜索表单控件中的标签,然后根据控件name返回并键入T。但它只会使用父表单。因此,如果您的标签位于某个面板中,则需要将面板指定为container参数。否则Find方法可以更新为递归方法,因此它将搜索所有表单子控件,但如果有两个Label1控件,那么它将只返回第一个,这可能是不正确的。

答案 1 :(得分:0)

如果您可以使用以下代码更改文本

,则可以在面板上放置所有标签
          foreach (Control p in panal.Controls)
            if (p.GetType == Label)
               p.Text = "your text";