У меня есть 12 кнопок в моем Form1, и каждая кнопка имеет текстовое поле рядом с ним. Событие кнопки вызывает метод dialogOpen, который обрабатывает получение объекта из формы2 и помещает строковое значение в текстовое поле.Как я могу реорганизовать этот код C# ниже?
Как разместить значение в текстовом поле в зависимости от того, на какую кнопку нажал пользователь? Поэтому, если это кнопка1, на которую нажал пользователь, то текст должен быть помещен в текстовое поле1, и если это кнопка2, на которую щелкнул пользователь, то возвращаемый текст должен быть помещен в текстовое поле2. Дело в том, чтобы избежать использования имени строки для проверки, поскольку все кнопки можно назвать «просматривать».
Прямо сейчас мой код ниже делает это, но он довольно повторяющийся, есть ли лучше сделать это?
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);
}
будет ли это работать, если все тексты кнопки говорят «просматривать», например. will dict [button1] все еще работает? –
Да, заметьте, я имею в виду имя кнопки в C#, а не его текст. – zmbq
+1 для того, чтобы быть самым частым ответом (с точки зрения кода) до сих пор, не делая ничего странного. –