3

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

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

textBox1:(这里我们必须输入我们要改变背景的文本框的名称)

文本框2:()

文本框3:()

文本框4:()

在我们的第一个文本框中,我们输入任何其他文本框的名称,当我们点击一​​个按钮时 - 背景会相应地改变。

通常我会做这样的事情:

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;
}

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

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

4

3 回答 3

10

一个非常乐观的方法是

this.Controls.Find("variableName", true)[0].BackColor
于 2012-08-21T13:16:59.817 回答
2

尝试这样的事情:

var txtBox = this.Controls.Find("textBox4", true);
于 2012-08-21T13:16:33.937 回答
0

您可以创建一个Dictionary<string, TextBox>字典中每个文本框的名称是该文本框的键的位置。

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

于 2012-08-21T13:17:03.533 回答