我一直在努力让我正在工作的项目更具可读性,因为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方法,现在它们中的大多数都是一行程序,但是仍然有那么多的子项,我觉得这样做应该是更好的方法。因此,理想情况下,我正在寻找一种新的/更好的方法来处理这个问题。
提前谢谢。
发布于 2012-07-28 14:48:36
您可以使用以下代码,但是您必须确保字符串与函数名完全相同
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;
}https://stackoverflow.com/questions/11698908
复制相似问题