跳转到内容

对话框

本页使用了标题或全文手工转换
维基百科,自由的百科全书
模态对话框示例,来自gedit

对话框(台湾称对话方块[1])是图形用户界面中的特殊视窗,用来向用者显示信息,或在需要时获得用者输入回应。之所以称为“对话框”是因为它们使计算机和用者之间构成了一个对话——或者是通知用者一些信息,或者是请求用者输入,或者两者皆有。

不同的用户交互使用不同的对话框。最简单的对话框是警告,它显示一条信息并且仅需要已读回应(通常单击“确定”按钮或“关闭”命令的对话框)。用来为操作提供警告和简单确认,也可能包括程序终止或崩溃的提示,以及用户有意或无意的关闭动作。虽然对于有模式对话框来说,这是个经常性的交互模式,但是由于它被认为在防止非预期的破坏性操作上不够有效以及存在更好的替换方案[2]而遭到可用性专家的批评。显示一般提示信息的对话框,可以设计为提示气泡等形式来避免打断用户操作。

无模式对话框

这是一种非强制回应的对话框,用于向用户请求非必须资料。即可以不理会这种对话框或不向其提供任何信息而继续当前工作,所以窗口均可打开并处于活动状态或是获得焦点(人机互动热点)。一类无模式对话框表现为工具栏,比如设置用于设置文字颜色。查找/替换对话框可算是无模式对话框,也可设计为工具栏。

有模式对话框

这种对话框强制要求用户回应,否则用户不可继续操作,直到与该对话框完成互动。这种对话框设计用于程序运行必须停下来,直到从用户获得额外信息,然后才可继续操作,或可能只想确认使用者想要执行有潜在危险的操作。有模式对话框以用户不喜欢看到方式出现,或是被习惯不去注意对话框提示的用户忽略,导致无法避免危险操作,故此一般视为坏的设计方案。[2]

有模式对话框一般分为系统级和应用程序级。系统级对话框出现时,用户在完成与对话框互动之前不能执行其它操作,比如关机对话框、Windows VistaUAC。应用程序级的则只对它的母程序有所限制,但可能在允许运行多个实际不同软件中有不同表现:只限定其中一扇程序视窗使之无法操作或全部限定。

模式的定义

根据杰夫·拉斯金在《Humane Interface英语Humane Interface》(页42)中对计算机科学对“模式”英语Mode (computer interface)的定义:

人机界面对于跟定的动作(gesture)是模态的(modal),如果(一)界面的当前状态不在用户的注意之处;(二)依赖于系统的状态,界面对动作会从几种不同的响应执行中选择一种执行。

照此定义,界面是无模态的仅当用户完全感知当前状态。例如,状态的改变是用户故意造成的。常见模态例子:

对话框与一般窗口的区别

从操作系统实现角度,对话框是特殊的窗口(window)。特殊之处不在于对话框会包含一些控件(如按钮、编辑框、下拉列表框等)。因为一般窗口也可以包含这些控件。特殊性在于,对话框的这些控件是用来与用户互动,所以有一些约定的使用规则:

  • Tab Order:按下Tab键或上、下、左、右方向键,各个控件依次获得输入焦点
  • 如果按钮获得输入焦点,这时按空格键或回车键,相当于鼠标左键点击了该按钮

对话框的默认窗口过程在处理有关的按键消息时,会自动解析处理上述使用规则。而一般窗口的窗口过程,显然没有这些缺省的案件消息处理。Windows操作系统提供了一个API函数IsDialogMessage,以支持对话框上述使用规则的自动实现。

参考