使用可变参数访问表单对象

Access a form object using variable parameters

有没有办法让我访问带有可变参数的标签?例如,我有一个标签列表(lbl00、lbl01、lbl02、lbl10、lbl11、lbl12)并且需要能够以编程方式访问它们以更改背景颜色。在下面的示例中,strLabel = "lbl01",这将对应于我表单中的正确对象,但这不能作为字符串传递。有什么方法可以让我完成这项工作吗?

谢谢!

        private void btnTest_Click(object sender, EventArgs e)
        {
            TestHilight("0", "1");
        }

        public void TestHilight(string x, string y)
        {
            String strLabel = "lbl" + x + y;
            strLabel.BackColor = System.Drawing.Color.Green;
        }

如果你在内存中跟踪你的标签会更好,但如果你想找到一个 Label 或基于名称的控件,那么你可以使用 Control.Find 方法:

var control = this.Controls.Find(strLabel, true); //pass "lbl" + x + y;
if(control != null && control.OfType<Label>().Any())
{
   //label found
   Label label = control.OfType<Label>().First() as Label;
   label.BackColor = System.Drawing.Color.Green;
}

您可以像这样缩短您的代码:

public void TestHilight(string x, string y)
{
    var matchedLabel = Controls.Find("lbl" + x + y, true).OfType<Label>().FirstOrDefault();
    if (matchedLabel != null)
    {
        //label found
        matchedLabel.BackColor = System.Drawing.Color.Green;
    }
}

您可以在字典中维护对标签控件的引用,其中键是字符串,例如lbl01,当需要设置BackColor时,从Dictionary中找到对应的label,设置其属性。

或者,您可以按名称搜索控件并设置其背景色 属性