首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >裁剪switch语句

裁剪switch语句
EN

Stack Overflow用户
提问于 2012-07-28 14:37:54
回答 1查看 329关注 0票数 3

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

因为每个按钮都需要做不同的事情,所以这是由一个switch语句控制的,下面是一个例子:

代码语言:javascript
复制
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方法,现在它们中的大多数都是一行程序,但是仍然有那么多的子项,我觉得这样做应该是更好的方法。因此,理想情况下,我正在寻找一种新的/更好的方法来处理这个问题。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-28 14:48:36

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

代码语言:javascript
复制
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;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11698908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档