总的来说,模态界面吸收大石头.另一方面,我想不出一个更好的方法来处理File Open ...,或者打印......而且,我想,这是因为
它们是偶然的行为,不常见且重要,并且
它们本质上是原子的; 您要么完成指定所有打印选项并完成它,要么取消整个节目.
让我们整理一个小风格指南.建议任何用例,其中对话框是首选的表示,以及为什么它是首选.对话框可以是非模态的吗?如果是,那么如何标记交易边界,因为取消不再具有明确的含义.例如,您是否使用"应用"按钮?
IMO,模态接口只应该在你使用HAVE应对任何对话正在做或询问之前,应用程序可以继续.在任何其他时间,如果您使用对话框,它应该是非模态的.
在进行非模态窗口时,您可能希望确保它们是唯一的:您实际上并不需要两个相同的工具箱(例如,在图形程序中)或两个相同的首选项对话框(我在产品中看到这个),这可能是充其量混淆.
另一方面,我很感激"搜索/替换"对话框是非模态的:我可以返回到文档并取消上次更改,跳过其他地方等等; 不会丢失当前设置.
不知何故,模态对话框告诉用户"停止其他所有事情并完成你正在做的事情",这有其用途,正如Stephen Wrighton的回答所指出的那样.