假设我有
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条愚蠢的代码行。
有更好的方法吗?
谢谢!
答案 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个标签,而是动态创建它们并将它们直接放入阵列中。