3

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

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

}

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

我想做类似的事情:

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

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

4

5 回答 5

14

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

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

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

于 2012-08-27T13:11:13.970 回答
2

我将您的解决方案称为设计缺陷,但我会这样做:

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

foreach(var item in itemArray)
{
    item.Text = string.Empty;
}
于 2012-08-27T13:11:09.217 回答
2

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

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

foreach(Label l in labels)
{
    l.Text = String.Empty;
}
于 2012-08-27T13:10:53.540 回答
1

不知道是不是最简单,反正是最短的。。

this.Controls.OfType<Label>().ToList().ForEach(lbl => { lbl.Text = String.Empty; });
于 2012-08-27T13:22:52.360 回答
0

也许您可以将 FindControl 与类似的东西一起使用

for(int i = 0; i < 5; i++)
{
   (FindControl("txt" + i.ToString())).Text = String.Emty;
}
于 2012-08-27T13:14:30.497 回答