MDI的缺点如下:
它通常需要用户学习和理解一组更复杂的窗口关系。
许多简单的操作可能需要一个两步过程。例如,将期望的窗口带到前台可能需要用户首先将容器窗口向前移动,然后再将容器窗口中的右侧主窗口向前移动。调整窗口大小或最大化窗口可能意味着首先调整容器窗口,然后调整其中的主窗口。
如果打开了多个容器窗口,用户可能会忘记哪个具有所需的主窗口,需要进行繁琐的搜索。
用户很容易对最大化、图标化、分层和关闭窗口的双重方式感到困惑。例如,他们可能会关闭整个应用程序而不是容器窗口中的一个窗口。或者他们可能会“丢失”一个窗口,因为他们在容器窗口中将其图标化而没有意识到这一点。
用户受限于他或她的窗口可以采用的尺寸和位置。假设我想同时查看一个应用程序的 3 个窗口和另一个应用程序的 1 个窗口。使用 SDI,我可以让每个窗口占据屏幕的一个象限,但使用 MDI 无法做到这一点。如果我想让 MDI 中的一个窗口大而另一个窗口小怎么办?我必须使容器窗口变大以容纳大窗口(它遮挡其他应用程序的窗口),但是在看孩子时会浪费空间。
请注意,所有这些缺点也适用于选项卡式文档界面 (TDI),选项卡式界面还有一个缺点,即用户无法并排查看同一容器窗口中的两个文档。选项卡还会在您的窗口中添加混乱并消耗空间。但是,总体 TDI 的问题往往比 MDI 少,因此它们可能更适合特殊情况(继续阅读)
综上所述,很难想到任何情况下都可以使用 MDI。它并不比 SDI 更好,同时增加了更多的复杂性和导航开销,并且与其他应用程序的窗口配合不佳。
应用程序没有理由不能拥有多个顶级 SDI 窗口。即使使用像 Origin 这样的应用程序,只要项目在每个窗口中都得到很好的识别,我也没有看到项目分布在多个 SDI 窗口中的问题。SDI 还允许不同类型的窗口(例如,图形与工作表)具有不同的菜单和工具栏,而不是根据活动窗口隐藏或禁用项目(前者令人困惑,后者浪费空间)。
SDI 为您的用户提供了比 MDI 或 TDI 更大的灵活性。用户可以重叠或最大化窗口,并将任务栏/停靠栏用作事实上的选项卡界面。用户可以选择调整窗口大小和重新定位窗口,以便一次查看多个窗口。每个窗口都可以独立调整大小以优化屏幕空间。无论 MDI 或 TDI 有什么优势,您都可以增强 SDI 以使其也具有这些优势(例如,提供一个缩略图菜单,使窗口之间的切换比使用任务栏更快,并且与选择选项卡相当,或者提供一个图标化所有一键打开应用程序的窗口)。
除非您有令人信服的理由使用 TDI,否则请使用 SDI 以实现这种灵活性。令人信服的原因包括以下的一些子集:
每个选项卡都用于不相关的高阶任务,用户不会频繁地在选项卡之间切换或跨选项卡比较信息。
您正在与非常低端的用户一起工作,他们对任务栏/停靠栏和多个窗口一无所知或感到困惑,并且不知道如何调整窗口大小(对于此类用户来说,引人注目的选项卡图像似乎比任务栏更好)。
您预计通常会有大量选项卡(例如,4 个或更多),并且您可以以比操作系统更有效的方式控制它们的显示,如果它们是任务栏/停靠栏上的 SDI 窗口(例如,关于订单和标签)。
使用 SDI,您会遇到用户将非活动窗口的工具栏或调色板与活动窗口混淆的问题。
选项卡的数量是固定的并且永久打开(例如,当每个选项卡是同一数据对象的不同组件时)。用户不必为尝试区分关闭选项卡和关闭整个窗口而烦恼;找出要导航到的窗口不是问题,因为所有窗口都有相同的选项卡。
实际上只有一种方法可以正确安排任务数据,用户之间或他们实际使用应用程序的目的没有差异。您最好使用选项卡和主-详细信息窗格的组合为用户设置它,而不是依靠用户来正确排列和调整 SDI 窗口的大小。
总之,考虑到您的用户能力、应用程序复杂性和任务结构,如果您的应用程序能够比用户/操作系统更好地管理内容显示,则使用 TDI,否则使用 SDI。