想象一下,我们有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;
}
就是这样!所以我的问题是:
是否可以将字符串转换为“控制名称”,如示例所示?
答案 0 :(得分:8)
非常乐观方法
this.Controls.Find("variableName", true)[0].BackColor
答案 1 :(得分:2)
尝试这样的事情:
var txtBox = this.Controls.Find("textBox4", true);
答案 2 :(得分:0)
您可以创建一个Dictionary<string, TextBox>
,其中Dictionary中每个TextBox的名称是该TextBox的键。
然后它就像TextBoxDictionary[variableName].BackColor = Color.Black;
一样简单,虽然我建议在执行此操作之前检查以确保它实际上在字典中。