【发布时间】:2011-12-06 09:17:07
【问题描述】:
我们正在创建一个新的 winforms 应用程序。出于不同的目的,我们有不同的用户界面。但是我们不确定是否应该将这些不同的 UI 项实现为
- 新的 windows 窗体对象 - 带有 mdiparent 子对象 -
-
作为用户控件-一个主窗体和许多包含其他页面的tabitems作为用户控件-
哪一个最适合开发人员友好、用户友好等? 或者有什么好的 3rd 方解决方案可以更好地管理一个应用程序中的多个表单?
【问题讨论】:
我们正在创建一个新的 winforms 应用程序。出于不同的目的,我们有不同的用户界面。但是我们不确定是否应该将这些不同的 UI 项实现为
作为用户控件-一个主窗体和许多包含其他页面的tabitems作为用户控件-
哪一个最适合开发人员友好、用户友好等? 或者有什么好的 3rd 方解决方案可以更好地管理一个应用程序中的多个表单?
【问题讨论】:
这真的取决于你想要完成什么。
当单个程序处理相同类型的多个文档(Word、Excel 是典型示例)时,Microsoft 曾经建议使用 MDI。但这似乎最近已经失宠了。我注意到即使是最新版本的 office 也不使用 MDI。
如果您想在标签样式界面(例如现代 Web 浏览器)中管理多个相同类型的文档,那么 Infragistics 提供了一个漂亮而灵活的标签控件集 (http://www.infragistics.com/dotnet/netadvantage /winforms/wintab.aspx)。
【讨论】:
我推荐 MDI 表格的原因如下:
您可以创建父表单类,作为您的主表单,而所有其他 MDI 表单都扩展了此主表单。
对于 MDI 表单,框架已经处理了窗口管理行为。无需手动实现、最小化、恢复、最大化或关闭窗口。
MDI 表单允许您同时显示多个窗口/控件。选项卡一次显示一个。因此,如果您的用户将在窗口之间比较数据,请使用 MDI。
您可以选择关闭 MDI 表单,该表单将处理并导致对象的关联实例被垃圾收集。这将使您的应用程序内存高效。选项卡无法关闭,并且您的用户控件实例将始终在后台存在(虽然我还没有测试过)。
MDI 表格已经过数十年的测试。
由于每个窗口都有单独的 .cs 文件,因此 MDI 表单的代码更简洁。使用选项卡,您的包含选项卡的表单中的代码可能会变得非常大。
【讨论】: