在Win 95中,我们常常通过单击鼠标右键来激活一个快捷菜单,从而加快了操作。此处所说的快捷菜单就是上下文菜单。上下文菜单在VB5中又称作弹出式菜单,它是独立于菜单栏而显示在窗体上的浮动菜单。在弹出式菜单上显示的项目取决于按下鼠标右键时指针所处的位置。
为了显示弹出式菜单,可使用PopupMenu 方法。这个方法使用下列语法:
[object .]PopupMenu menuname [,flags [,x [,y [,boldcommand]]]]。
例如:当用鼠标右键单击一个窗体时,以下的代码显示一个名为mnuFile 的菜单。可用MouseUp 或者MouseDown 事件来检测何时单击了鼠标右键:Private Sub Form_MouseUp (Button As Integer ,Shift As _Integer ,XAs Single ,Y As Single)If Button =2Then '检查是否单击了鼠标右键PopupMenu mnuFile '把文件菜单显示为一个弹出式菜单End IfEnd Sub
直到菜单中被选取一项或者点击窗体取消这个菜单时,调用Pop—upMenu 方法后面的代码才会运行。注意每次只能显示一个弹出式菜单。在已显示一个弹出式菜单的情况下,对后面的调用PopupMenu 方法将不予理睬。在一个菜单控件正活动的任何时刻,调用PopupMenu方法均不会被理睬。
我们常常会用一个弹出式菜单来访问那些在菜单栏中不常用的选项。为创建一个不显示在菜单栏里的菜单,可在设计时使顶级菜单项目为不可见(保证在菜单编辑器里的“Visible”复选框没有被选上)。当Visual Basic 显示一个弹出式菜单时,指定的顶级菜单的Visible 属性会被忽略。
可是现在我们做一下,会发现这与Win 95的上下文菜单还是有些不同,当显示了一个上下文菜单时,如果不选取一项,而在别的地方单击鼠标右键,就会没有任何反应。怎么办呢,我们通过以下过程解决:Private Sub Form_MouseDown(Button As Integer ,Shift As Integer ,_XAs Single ,Y As Single)SendKeys "{ESC}"End Sub
再试一下,看是不是和Win 95的一样了。记住,要想做一个好的软件,没有上下文菜单可是不行的。(山东省济宁市公路设计院李飚272113)