gpt4 book ai didi

c# - 修剪 switch 语句

转载 作者:行者123 更新时间:2023-11-30 16:23:18 25 4
gpt4 key购买 nike

我一直在努力使我正在工作的项目更具可读性,因为 UI 类看起来一团糟。我面临的新问题是 StatusStrip、MenuStrip 和 ToolStrip 控件。

由于每个按钮都需要做不同的事情,目前这是通过 switch 语句控制的,下面是一个示例:

switch (e.ClickedItem.Text.ToLower())
{
case "find":
{
Find find = new Find(customTextBox1);
find.Show();
break;
}
case "undo":
{
customTextBox1.Undo();
break;
}
case "redo":
{
customTextBox1.Redo();
break;
}
case "cut":
{
customTextBox1.Cut();
break;
}
case "copy":
{
customTextBox1.Copy();
break;
}
case "paste":
{
customTextBox1.Paste();
break;
}
case "delete":
{
customTextBox1.SelectedText = "";
break;
}
case "refresh":
{
RefreshData();
break;
}
case "select all":
{
customTextBox1.SelectAll();
break;
}
}

上面的代码只针对一个项目,所以想象一下有 20 个,每个有 5-10 个子项目。

如您所见,我已经清除了 case 方法,现在它们中的大多数都是单行的,但仍然有那么多的子项,感觉它应该是一种更好的方法。所以理想情况下,我正在寻找一种新的/更好的方法来处理这个问题。

提前致谢。

最佳答案

您可以使用下面的代码,但是您必须确保字符串与函数名完全相同

switch (e.ClickedItem.Text.ToLower())
{
case "find":
Find find = new Find(customTextBox1);
find.Show();
break;
case "undo": case "redo": case "cut": case "copy": case "paste": case "select all":
Type thisType = customTextBox1.GetType();
MethodInfo theMethod = thisType.GetMethod(e.ClickedItem.Text.ToLower());
theMethod.Invoke(customTextBox1, userParameters);
break;
case "delete":
customTextBox1.SelectedText = "";
break;
case "refresh":
RefreshData();
break;
}

关于c# - 修剪 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698908/

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