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

时间:2015-04-14 18:17:33

标签: c# winforms label

有没有办法可以访问带有可变参数的标签?例如,我有一个标签列表(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;
        }

2 个答案:

答案 0 :(得分:4)

最好是在内存中跟踪标签,但如果要根据名称找到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;
    }
}

答案 1 :(得分:0)

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

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