通过使用变量到引用表单对象来优化C#代码

时间:2012-11-09 05:50:24

标签: c#

我在表单上有几个标签,我希望能够重置为“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";
    }

2 个答案:

答案 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");

..有点喜欢:)