要自定义现存的对话框,请按照以下步骤执行:
1. 从“工程”菜单中选取“添加窗体”,在工程中添加一现存的窗体。
2. 从“文件”菜单中选取“filename 另存为”并输入新的文件名(这可以防止改变已存在的窗体版本)。
3. 根据需要自定义窗体的外观。
4. 在代码窗口中自定义事件过程。
要创建新的对话框,请按照以下步骤执行:
1. 从“工程”菜单中选取“添加窗体”。
- 或者 -
在工具栏上单击“窗体”按钮,创建新的窗体。
2. 如有必要,自定义窗体外观。
3. 在“代码”窗口中自定义事件过程。
有很大的自由来定义自定义对话框的外观。它可以是固定的或可移动的、模式或无模式的。它可以包含不同类型的控件;然而,对话框通常不包括菜单栏、窗口滚动条、最小化与最大化按钮、状态条或者尺寸可变的边框。本主题余下的部分将讨论创建典型类型的对话框方法。
添加标题
对话框总应当有标识它的标题。要创建标题,设置该窗体的 Caption 属性为将在标题条中显示的文本字符串。通常,这一步是在设计时使用“属性”窗口来完成的,但也可以用代码来完成这一步。例如:
frmAbout.Caption = "About"
提示 如果想完全删除此标题栏,可以设置窗体的 ControlBox、MinButton 和MaxButton 为 False;设置 BorderStyle 为尺寸不可变的设置(0、1 或 3),并设置 Caption 为空字符串 ("")。
设置标准对话框的属性
一般来说,用户响应对话框时,先提供信息,然后用“确定”或者“取消”命令按钮关闭对话框。因为对话框是临时性的,用户通常不需要对它进行移动、改变尺寸、最大化或最小化等操作。其结果是:随新窗体出现的可变尺寸边框类型、“控制”菜单框、“最大化”按钮以及“最小化”按钮,在大多数对话框中都是不需要的。
通过设置 BorderStyle、ControlBox、MaxButton 和 MinButton 属性,可以删除这些项目。例如,“关于”对话框可能使用以下的属性设置。

记住,如果删除“控制”菜单框 ( ControlBox = False ),则必须向用户提供退出该对话框的其它方法。实现的办法通常是在对话框中添加“确定”、“取消”或者“退出”命令按钮,并在隐藏或卸载该对话框的 Click 按钮事件中添加代码。
添加和放置命令按钮
模式对话框必须至少包含一个退出该对话框的命令按钮。通常用两个命令按钮:其中一个按钮开始动作,而另一个按钮关闭该对话框而不做任何改变。典型状态是,这两个按钮的 Caption 属性设置“确定”与“取消”。在这个方案中,“确定”命令按钮的 Default 属性设置为 True,而 Cancel 命令按钮的 Cancel 属性设置为 True。虽然“确定”与“取消”是最常用的按钮,其他的按钮标题组合也可使用。
显示消息的对话框通常使用 Label 控件来显示错误消息或者命令提示,并且用一至两个命令按钮来执行动作。例如,也许给标识的 Caption 属性赋以错误消息或者命令提示,而给两个命令按钮控件的 Caption 属性指定“是”与“否”。当用户选取“是”,则发生一个动作,当选取“否”时,则发生另一个动作。
这种类型对话框的命令按钮通常被放置在对话框的底部或右边,而顶部或左边的按钮为缺省按钮,如图 6.19 所示。

设置缺省、取消和焦点
命令按钮控件提供了以下的属性:
Default
Cancel
TabIndex
TabStopDefault
按钮就是当用户按下 ENTER 键时选中的按钮。在一个窗体上,只能有一个命令按钮的 Default 属性可以设置为 True。按下 ENTER 键就调用缺省命令按钮的Click事件。这个功能连同编辑控件(比如 TextBox )一起工作。例如,可以在文本框中键入数据,然后按下 ENTER 键来产生Click 事件,以取代选取“确定”按钮。
“取消”按钮就是当按下 ESC 键时选中的按钮。在一个窗体上,只能有一个命令按钮的 Cancel 属性可以设置为 True。按下 ESC 键调用“取消”命令按钮的Click事件。“取消”按钮也可以为缺省命令按钮。要指定对话框的“取消”按钮,设置该命令按钮的Cancel属性为True。
提示 一般说来,代表最可靠的或者最安全的操作的按钮应当是缺省按钮。例如,在“文本替换”对话框中,“取消”应当是缺省按钮,而不是“全部替换”。
也可以指定当对话被显示时具有焦点的按钮。当窗体被显示时,带有最低的 TabIndex 设置的控件接收焦点。按下 ENTER 键会调用缺省命令按钮或者有焦点的命令按钮的Click事件。要在窗体被显示时将焦点给某个命令按钮,则设置该命令按钮的 TabIndex 为 0,它的TabStop属性为 True。也可以用 SetFocus 方法在窗体被显示时将焦点给指定的控件。
详细信息 请参阅《语言参考》的“TabIndex 属性”与“TabStop 属性”。
使对话框上的控件无效
有时候需要使控件无效,因为它们的动作在当前的上下文中不适用。例如,当 Visual Basic的“查找”对话框第一次显示时,“查找下一个”按钮应无效,如图 6.20 所示。设置对话上的控件的 Enabled 属性为 False,可以使其无效。
要使对话框上的控件无效,请
1.设置每个控件的 Enabled 属性为 False。例如:
cmdFindNext.Enabled = False
cmdReplace.Enabled = False

显示自定义对话框
使用应用程序中显示其他窗体同样的方法来显示对话框。当应用程序运行时,启动窗体会自动装入。想在应用程序中出现第二个窗体或对话框,要用装入并显示它的代码来实现。同样,想要窗体或对话框消失,也要编写卸载或隐藏它的代码。
以下代码在用户选取“帮助”菜单中的“关于”菜单项时显示“关于”对话框。
Private Sub mnuHelpAbout_Click ()
vb的工具栏、对话框