我在表单中有6个标签控件:label1,label2 ... label6。 如何在这样的循环中“引用”控件:
for (i=1;i<=6;i++) {
label[i].text = ...;
}
谢谢
答案 0 :(得分:2)
尝试,
Label []labels={Label1,Label2,Label3};
答案 1 :(得分:2)
这是另一种方式:
for (int n = 1; n < 4; n++)
{
Control[] Temp = Controls.Find("Label" + n, false);
Temp[0].Text = n.ToString();
}
答案 2 :(得分:1)
我们假设这是WinForms并且您的“标签”是控件 - Form
具有Controls
属性,这是与该容器关联的控件的集合,因此,我们应该能够使用Linq来查询它,获取我们想要的类型的控件,然后迭代它们,如下:
using System.Linq;
var labels = from control in Controls where control is Label select control;
for (i = 1; i <= controls.Count; i++)
{
labels[i].text = i.ToString();
}
有点粗糙,但你不是很具体 - 如果没别的话,它应该是一个不错的起点。
编辑:
好吧,我以为我会花时间去研究它,Form.Controls
不喜欢在Linq中使用(至少以这种直截了当的方式),所以作为替代方案,这应该有帮助:
private List<Label> GetLabels()
{
var result = new List<Label>();
foreach (var control in Controls)
{
if (control is Label)
{
result.Add(control as Label);
}
}
return result;
}
上述方法甚至可以简单地以通用方式考虑;但是你可以继续:
var labels = GetLabels();
for (int i = 0; i <= labels.Count; i++)
{
labels[i].Text = i.ToString();
}
答案 3 :(得分:1)
您可以实现以下内容: -
int y = 0;
int index = 0;
Label[] labels = new Label[6];
foreach (Student std in StudentList)
{
labels[index] = new Label();
labels[index].Text = std.Name;
labels[index].ForeColor = Color.Red;
labels[index].Location = new Point(0, y);
labels[index].Size = new Size(50, 12);
y = y + 10;
++index;
}
// Add the Label control to the form.
mPanel.Controls.AddRange(labels);