2

我希望能够重置为“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";
    }
4

2 回答 2

1

如果您没有其他标签:

this.Controls.OfType<Label>()

将为您提供IEnumerable表单上的所有标签,然后您可以使用 Simons 代码:

this.Controls.OfType<Label>().ToList<Label>().ForEach(l => l.Text = "0");
于 2012-11-09T05:58:30.467 回答
0

这将更加昂贵,因为您需要使用反射按名称查找对象并将其文本属性设置为“0”。

如果您想要更小的东西,这里有一个适合您的衬垫:

new List<Label>() { lbl1, lbl2, lbl3, lbl4, lbl5, lbl6 }.ForEach(x => x.Text = "0");

..有点恶心虽然:)

于 2012-11-09T05:58:47.483 回答