设置Tab键顺序
例如,假设您建立了两个名称为Text1和Text2的TextBox,然后又建立了一个名称为Commandl的CommandButton。应用程序启动时,Text1具有焦点。按TAB键将使焦点按控件建立的顺序在控件间移动,如图3.20所示。
设置TabIndex属性将改变一个控件的tab键顺序。控件的TabIndex属性决定了它在tab键顺序中的位置。按照缺省规定,第一个建立的控件其TabIndex值为0,第二个的TabIndex值为1,以此类推。当改变了一个控件的tab键顺序位置,Visual自动为其它控件的tab键顺序位置重新编号,以反映插入和删除。例如,要使Command1变为tab键顺序中的首位,其它控件的TabIndex值将自动向上调整,如下表所示。
因为编号从0开始,TabIndex的最大值总是比tab键顺序中控件的数目少1。即使TabIndex属性值高于控件数目,VisualBasic也会将这个值转换为控件数减一。
注意不能获得焦点的控件以及无效的和不可见的控件不具有TabIndex属性,因而不包含在tab键顺序中。按TAB键时,这些控件将被跳过。
在Tab键顺序中删除控件
通常,运行时按TAB键能选择tab键顺序中的每一控件。将控件的TabStop属性设为False(0),便可将此控件从tab键顺序中删除。
TabStop属性已置为False的控件,仍然保持它在实际tab键顺序中的位置,只不过在按tab键时这个控件被跳过。
注意一个OptionButton组只有一个tab站。选中的按钮(即Value值为True的按钮)的TabStop属性自动设为True,而其它按钮的TabStop属性为False。
菜单基础
如果应用程序要为用户提供一组命令,菜单提供一种方便的给命令分组的方法,并使用户容易访问这些命令。
图3.21举例说明了无标题窗体的菜单界面元素。
菜单栏立即出现在窗体的标题栏下面,并包含一个或多个菜单标题。当单击一个菜单标题(如“文件”),包含菜单项目的列表就被拉下来。菜单项可以包括命令(如“新建”和“退出”)、分隔条和子菜单标题。用户看到的每个菜单项和在“菜单编辑器”中定义的一个菜单控件对应(“菜单编辑器”将在本章后面讨论)。
要使您的应用程序简单好用,应该将菜单项按其功能分组。例如,图3.21中与文件有关的命令“新建”,“打开”,和“另存为”都列入“文件”菜单。有些菜单项目直接执行动作,如“文件”菜单中的“退出”菜单项将关闭应用程序。其它菜单项显示一个对话框,即要求用户提供应用程序执行动作所需信息的窗口。应该在这些菜单项后加上省略符(...)。例如,当从“文件”菜单中选择“另存为...时”,出现“文件另存为”对话框。
菜单控件是一个对象;与其它对象一样,它具有定义它的外观与行为的属性。在设计或运行时可以设置Caption属性、Enabled和Visible属性、Checked属性以及其它属性。菜单控件只包含一个事件,即Click事件,当用鼠标或键盘选中该菜单控件时,将调用该事件。
详细信息关于菜单控件的详细信息,请参阅第六章“创建用户界面”中的“用菜单编辑器创建菜单”。
弹出式菜单
弹出式菜单是显示于窗体之上,独立于菜单栏的浮动式菜单,如图3.22所示。显示在弹出式菜单上的项取决于鼠标右键按下时指针的位置,因此,弹出式菜单又称为上下文菜单(在Windows95中,击鼠标右键可激活上下文菜单。)应该用弹出式菜单提供一种访问公共的上下文命令的高效方法。例如,用鼠标右键单击一个TextBox,将会出现一个上下文菜单(如图3.22所示)。
任何至少有一个菜单项的菜单,运行时都可以显示为弹出式菜单。使用PopupMenu方法可显示弹出式菜单。
详细信息关于弹出式菜单的详细信息,请参阅第六章“创建用户界面”中的“用菜单编辑器创建菜单”。
使用菜单编辑器
使用“菜单编辑器”,可向现存的菜单中增加新命令、用自己的命令替代现存的菜单命令、产生新的菜单和菜单栏,改变和删除现存菜单和菜单栏。“菜单编辑器”的主要优点是使用方便。可以在只用很少编程的全交互方式中自定义菜单。
要显示“菜单编辑器”,请
在“工具”菜单中选择“菜单编辑器这将打开“菜单编辑器”,如图3.23所示
大多数菜单控件属性可用“菜单编辑器”设置,同样,所有的菜单属性也可以在“属性”窗口中得到。通常,在“菜单编辑器”中建立菜单,但要快速改变单个属性,一般使用“属性”窗口。
详细信息关于创建菜单和使用“菜单编辑器”的详细信息,请参阅第六章“创建用户界面”中的“用菜单编辑器创建菜单”。
用对话框提示用户
在基于Windows的应用程序中,对话框被用来提示用户提供应用程序继续运行所需的数据或者向用户显示信息。对话框是一种特殊类型的窗体对象,可用以下三种方法之一建立:
使用MsgBox或InputBox函数的代码可以创建预定义对话框。
使用标准窗体或自定义已存在的对话框创建自定义对话框。
使用CommonDialog控件可创建标准对话框,如“打印”和“打开文件”。
图3.24是利用MsgBox函数创建预定义对话框的例子。
当在代码中调用MsgBox函数时,该对话框被显示。代码如下:
MsgBox"Errorencounteredwhiletryingtoopenfile,"&vbCrLf&"pleaseretry.",vbExclamation,"TextEditor"
需要给MsgBox函数提供三条信息或三个参数:消息文本、决定对话框类型的常数(numeric值)和标题。由于样式可以使用按钮和图标的各种各样组合,所以创建对话框更加容易。
由于大多数对话框需要用户的交互作用,所以通常显示为模态对话框。在继续使用应用程序的其它部分以前,必须关闭(隐藏或卸载)模态对话框。例如,若在切换到其它窗体或其它对话框前必须单击“确定”或者“取消”,那么这个对话框就是模态对话框。
非模态对话框不需要关闭就可以使焦点在该对话框和其它窗体之间移动。对话框显示时,可以在当前应用程序的其它地方继续工作。非模态对话框很少;通常因为应用程序继续前需要响应才显示对话框。VisualBasic中“编辑”菜单的“查找”对话框就是一个非模态对话框。使用非模态对话框显示常用的命令或信息。
详细信息关于创建对话框的详细信息,请参阅第六章“创建用户界面”。
新闻热点
疑难解答