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

时间:2012-08-21 13:14:00

标签: c# winforms controls

  

可能重复:
  Find a control in C# winforms by name

想象一下,我们有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;
}

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

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

3 个答案:

答案 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;一样简单,虽然我建议在执行此操作之前检查以确保它实际上在字典中。

相关问题