使用具有对象名称的for循环

时间:2012-08-27 13:08:11

标签: c# .net windows

我有一个简单的for循环如下:

for (int i = 0; i > 20; i++)
{

}

现在我有20个标签(label1,label2,label3等等......)

我想做点什么:

for (int i = 0; i > 20; i++)
{
    label[i].Text = String.Empty;
}

实现这一目标的最简单方法是什么?

5 个答案:

答案 0 :(得分:14)

如果您的标签放在一个容器上,例如Form,则可以执行以下操作:

foreach(Label l in this.Controls.OfType<Label>())
{
    l.Text = string.Empty;
}

相同的任何其他容器,例如PanelGroupBox,只需将this替换为容器名称(panel1.Controls等)。

答案 1 :(得分:2)

创建一个数组或标签列表并循环遍历该列表以设置每个标签的属性

List<Label> labels = new List<Label>();
labels.Add(label1);

foreach(Label l in labels)
{
    l.Text = String.Empty;
}

答案 2 :(得分:2)

我称你的解决方案是一个设计缺陷,但我会选择这样的东西:

var itemArray = this.Controls.OfType<Label>();

foreach(var item in itemArray)
{
    item.Text = string.Empty;
}

答案 3 :(得分:1)

不知道它是否最简单,但它是最短的..

this.Controls.OfType<Label>().ToList().ForEach(lbl => { lbl.Text = String.Empty; });

答案 4 :(得分:0)

也许你可以使用类似

之类的FindControl
for(int i = 0; i < 5; i++)
{
   (FindControl("txt" + i.ToString())).Text = String.Emty;
}