将菜单按钮及其功能与表单同步

时间:2016-03-11 15:56:29

标签: .net winforms design-patterns

假设我有一个带有功能区菜单的winform。 在这个功能区中有一些按钮,如" New"," Save"," Delete"等等... 应用程序可以在其中打开表单,有典型的数据管理控件,因此我们可以创建新书/视频/笔记本电脑,SAVE书/视频/笔记本电脑...... 您将如何保持同步按钮(UI)以及您使用单个按钮管理所有NEW / SAVE / DELETE表格(阅读书籍/视频/笔记本电脑)的所有模式?

2 个答案:

答案 0 :(得分:1)

您可以创建一个包含需要在共享工具栏中使用的常用方法和属性的界面。

然后在表单中实现这些方法。例如,如果接口中有NewDocument方法,则每个类都可以实现该方法。

然后在主窗体中,创建一个公共接口类型的属性ActiveForm,以存储对活动表单的引用。此外,如果您使用的是多表单基础结构,可以让您知道活动窗口,则可以将其强制转换为通用接口类型。

然后在主窗体中,当您单击按钮(如新文档按钮)时,可以调用ActiveForm.NewDocument来运行活动表单的实现。

答案 1 :(得分:1)

我会使用责任链模式。 表单必须实现接口(假设,IChain)才能接受功能区菜单对象(可能是任何代理对象 - 功能区最近可能会检查它并创建必要的菜单项)。 在表单创建(事件或观察者模式)上,功能区将其菜单代理发送到IChain。 IChain实现决定如何填充它。

链的好处 - 它允许许多接收者处理方法。您可以使用嵌套表单,在这种情况下,很难确定所有菜单组合。让表单决定在菜单中输出什么 - 这是他们的头痛和责任。