将WinForm标签放入阵列?

时间:2010-09-22 13:28:41

标签: c# winforms arrays

假设我有

Label1
Label2
Label3

我想做类似的事情:

for(int i=0;i<3;i++)
{
    LabelArray[i].Text = "weee!";
}

要填充数组,我知道我可以执行以下操作:

LabelArray[0] = Label1;
LabelArray[1] = Label2;
LabelArray[2] = Label3;

但这似乎并不聪明,因为我有50个标签,那将是50条愚蠢的代码行。

有更好的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:2)

您必须遍历Form.Controls[]才能找到标签。

foreach (var control in this.Controls)
{
    if (control is Lable)
         labelList.Add((Lable)control));
}

答案 1 :(得分:0)

如果以编程方式创建标签,则可以创建标签,并在for循环中设置文本,然后将其添加到窗体控件集合中。

如果您在设计时添加50个标签,这样他们就会获得50个单独的名称,那么我不知道任何更好的解决方案。

如果要设置所有标签的文本,还可以迭代Form的Controls集合并检查它们是否为Label类型,如果是,则设置其text属性。

答案 2 :(得分:0)

您有两种选择:

  • 使用Reflection获取标签,例如

    for (int i = 0; i < 50; i++)
        labelArray[i] = (Label)GetType().GetField("Label" + (i+1)).GetValue(this);
    
  • 不要使用WinForms设计器来创建50个标签,而是动态创建它们并将它们直接放入阵列中。