我在表单上有几个标签,我希望能够重置为“0”。 我通过引用每个标签来解决它。我也使用了数组和for循环,这似乎更有效。有没有办法通过使用for变量引用每个标签名称并构造一个字符串,评估标签名称而不是数组?
像这样:
for (int x = 0; x < 6; x++)
lbls[x].Text = "0";
这是我的代码:
// Clear form labels
private void btnClear_Click(object sender, EventArgs e)
{
Label[] lbls = new Label[]
{
lbl1, lbl2,lbl3,lbl4,lbl5,lbl6
};
for (int x = 0; x < 6; x++)
lbls[x].Text = "0";
//lbl1.Text = "0";
//lbl2.Text = "0";
//lbl3.Text = "0";
//lbl4.Text = "0";
//lbl5.Text = "0";
//lbl6.Text = "0";
}
答案 0 :(得分:1)
如果您没有其他标签:
this.Controls.OfType<Label>()
会为您提供表单上所有标签的IEnumerable
,然后您就可以使用Simons代码:
this.Controls.OfType<Label>().ToList<Label>().ForEach(l => l.Text = "0");
答案 1 :(得分:0)
这将更加昂贵,因为您需要使用Reflection按名称查找对象并将其text属性设置为“0”。
如果你想要更小的东西,这里有一个衬垫:
new List<Label>() { lbl1, lbl2, lbl3, lbl4, lbl5, lbl6 }.ForEach(x => x.Text = "0");
..有点喜欢:)