将字符串转换为C#中的控件名称

可能重复:
按名称查找C#winforms中的控件

想象一下,我们有4个文本框(和一个按钮):

textBox1 :(这里我们必须输入我们想要更改背景的textBox的名称)

TextBox2中:()

textBox3 :()

textBox4 :()

在我们的第一个文本框中,我们输入任何其他TextBox的名称,当我们单击一个按钮时 – backrground将相应地更改。

通常我会做这样的事情:

private void button1_Click(object sender, EventArgs e) { string variableName = textBox1.Text(); if (variableName == "textBox1") { textBox1.BackColor = Color.Black; } else if (variableName == "textBox2") { textBox2.BackColor = Color.Black; } else if (variableName == "textBox3") { textBox3.BackColor = Color.Black; } else if (variableName == "textBox4") { textBox4.BackColor = Color.Black; } } 

另一种方式 – 更简单的方法是做同样的操作:

 private void button1_Click(object sender, EventArgs e) { string variableName = textBox1.Text(); variableName.BackColor = Color.Black; } 

就这样! 所以我的问题是:

是否可以将字符串转换为“控制名称”,如示例中所示?

一种非常乐观的方法

 this.Controls.Find("variableName", true)[0].BackColor 

尝试这样的事情:

 var txtBox = this.Controls.Find("textBox4", true); 

您可以创建一个Dictionary ,其中Dictionary中每个TextBox的名称是该TextBox的键。

然后就像TextBoxDictionary[variableName].BackColor = Color.Black;一样简单TextBoxDictionary[variableName].BackColor = Color.Black; 虽然我建议在执行此操作之前检查以确保它实际上在字典中。