Form1 には 12 個のボタンがあり、各ボタンの横にテキスト ボックスがあります。ボタン イベントは、form2 からのオブジェクトの取得とテキスト ボックスへの文字列値の配置を処理する dialogOpen というメソッドを呼び出します。
ユーザーがクリックしたボタンに応じて、返された値をテキストボックスに配置するにはどうすればよいですか? したがって、ユーザーがクリックしたのがボタン 1 の場合、返されたテキストは textbox1 に配置され、ユーザーがクリックしたボタン 2 の場合、返されたテキストは textbox2 に配置する必要があります。ボタンはすべて「参照」と呼ばれる可能性があるため、文字列名を使用してチェックすることは避けてください。
現在、以下のコードはそれを行っていますが、非常に反復的です。これを行う方が良いですか?
private void dailogueOpen(String btnName)
{
if (listBox1.SelectedItem == null)
{
MessageBox.Show("Please Select a form");
}
else
{
var selectedItem = (FormItems)listBox1.SelectedItem;
var form2result = new Form2(myDataSet, selectedItem);
var resulOfForm2 = form2result.ShowDialog();
if (resulOfForm2 == DialogResult.OK)
{
switch (btnName)
{
case "btn1":
textBox1.Text = form2result.getValue();
break;
case "btn2":
textBox2.Text = form2result.getValue();
break;
case "btn3":
textBox3.Text = form2result.getValue();
break;
case "btn4":
textBox4.Text = form2result.getValue();
break;
case "btn5":
textBox5.Text = form2result.getValue();
break;
}
}
}
}
private void button1_Click(object sender, EventArgs e)
{
String name = "btn1";
dailogueOpen(name);
}
private void button2_Click(object sender, EventArgs e)
{
String name = "btn2";
dailogueOpen(name);
}
private void button3_Click(object sender, EventArgs e)
{
String name = "btn3";
dailogueOpen(name);
}
private void button4_Click(object sender, EventArgs e)
{
String name = "btn4";
dailogueOpen(name);
}
private void button5_Click(object sender, EventArgs e)
{
String name = "btn5";
dailogueOpen(name);
}