3

重複の可能性:
名前でC#WinFormsのコントロールを検索する

4つのtextBox(およびボタン)があると想像してください。

textBox 1 :(ここでは、背景を変更するtextBoxの名前を入力する必要があります)

textBox2 :()

textBox3 :()

textBox4 :()

最初のテキストボックスに他のテキストボックスの名前を入力し、ボタンをクリックすると、それに応じて背景が変更されます。

通常、私は次のようなことをします:

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>Dictionary 内の各 TextBox の名前がその TextBox のキーである を作成できます。

と同じくらい簡単TextBoxDictionary[variableName].BackColor = Color.Black;ですが、それを行う前に実際に辞書にあることを確認することをお勧めします。

于 2012-08-21T13:17:03.533 に答える