我在Form1中有12個按鈕,每個按鈕旁邊都有一個文本框。按鈕事件調用一個名爲dialogOpen的方法,該方法處理從form2獲取對象並將字符串值放入文本框中。我該如何重構下面的C#代碼?
如何根據用戶點擊的按鈕來放置文本框中返回的值?因此,如果是button1用戶點擊,則返回的文本應放置在textbox1中,如果是button2,則用戶單擊,然後返回的文本應置於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);
}
這將工作,如果所有按鈕的文本說「瀏覽」的例子。會否說明[button1]仍然有效? –
是的,請注意我指的是C#中按鈕的名稱,而不是它的文本。 – zmbq
+1是迄今爲止最簡潔的答案(代碼方面),而沒有做任何奇怪的事情。 –