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