在C#转换字符串到控制名[重复](converting string to a control na

2019-07-31 02:29发布

可能重复:
查找按名称C#的WinForms控制

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

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

TextBox2中:()

textBox3 :()

textBox4 :()

在我们的第一个文本框,我们进入任何其他文本框的名称,当我们点击一​​个按钮 - 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;
}

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

是否有可能将字符串转换为显示例如“控件名称”?

Answer 1:

一个非常乐观的方法是

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


Answer 2:

尝试是这样的:

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


Answer 3:

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

那么这将是一样简单TextBoxDictionary[variableName].BackColor = Color.Black; 虽然我建议您检查,以确保它实际上是在字典中这样做了。



文章来源: converting string to a control name in C# [duplicate]