gpt4 book ai didi

c# - 如何重构下面的 C# 代码?

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:47 27 4
gpt4 key购买 nike

我的 Form1 中有 12 个按钮,每个按钮旁边都有一个文本框。按钮事件调用一个名为 dialogueOpen 的方法,该方法处理从 form2 获取对象并将字符串值放入文本框中。

如何根据用户单击的按钮将返回的值放入文本框中?因此,如果用户单击的是 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);
}

最佳答案

编辑:我刚刚注意到您的事件处理程序。随之而来的是更多的重构:

是的,有。您需要以某种方式将文本框关联到按钮。例如,像这样创建一个字典:

Dictionary<Button, TextBox> _dict;

_dict[button1] = textBox1;
_dict[button2] = textBox2;
...

对所有事件使用一个事件处理程序:

private void button_click(object sender, EventArgs e)
{
dialogeOpen((Button)sender);
}

更改 dialogueOpen 以接受按钮而不是字符串

 _dict[btn].Text = form2Result.getValue();

关于c# - 如何重构下面的 C# 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495140/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com