弹出式菜单是独立于菜单栏而显示在窗体上的浮动菜单。在弹出式菜单上显示的项目取决于按下鼠标右键时指针所处的位置;因而,弹出式菜单也被称为上下文菜单。在 Microsoft Windows 95 中,可以通过单击鼠标右键来激活上下文菜单。
在运行时,至少含有一个菜单项的任何菜单都可以作为弹出式菜单被显示。为了显示弹出式菜单,可使用 PopupMenu 方法。这个方法使用下列语法:
[object.]PopupMenu menuname [, flags [,x [, y [, boldcommand ]]]]
例如:当用户用鼠标右键单击一个窗体时,以下的代码显示一个名为 mnuFile 的菜单。可用 MouseUp 或者 MouseDown 事件来检测何时单击了鼠标右键,虽然标准用法是使用 MouseUp 事件:
Private Sub Form_MouseUp (Button As Integer, Shift As _ Integer, X As Single, Y As Single) If Button = 2 Then '
检查是否单击了鼠标右键。PopupMenu mnuFile '
把文件菜单显示为一个弹出式菜单。End If
End Sub
直到菜单中被选取一项或者取消这个菜单时,调用 PopupMenu 方法后面的代码才会运行。
注意 每次只能显示一个弹出式菜单。在已显示一个弹出式菜单的情况下,对后面的调用 PopupMenu 方法将不予理睬。在一个菜单控件正活动的任何时刻,调用 PopupMenu 方法均不会被理睬。
常常会想用一个弹出式菜单来访问那些在菜单栏中不常用的选项。为创建一个不显示在菜单栏里的菜单,可在设计时使顶级菜单项目为不可见(保证在菜单编辑器里的“Visible”复选框没有被选上)。当 Visual Basic 显示一个弹出式菜单时,指定的顶级菜单的 Visible 属性会被忽略。
在 PopupMenu 方法中使用 flags 参数可以进一步定义弹出式菜单的位置与性能。下表列出了可用于描述弹出式菜单位置的标志。
位置常数 | 描述 |
vbPopupMenuLeftAlign | 缺省。指定的 x 位置定义了该弹出式菜单的左边界。 |
vbPopupMenuCenterAlign | 弹出式菜单以指定的 x 位置为中心。 |
vbPopupMenuRightAlign | 指定的 x 位置定义了该弹出式菜单的右边界。 |
下表列出了可用于描述弹出式菜单性能的标志。
行为常数 | 描述 |
vbPopupMenuLeftButton | 缺省。只有当用户用鼠标左键单击菜单项时,才显示弹出式菜单。 |
vbPopupMenuRightButton | 当用户用鼠标右键或者左键单击菜单项时,显示弹出式菜单。 |
想要指定一个标志,从每组中选取一个常数,再用 Or 操作符将它们连起来。下面的代码是,当用户单击一个命令按钮时,显示一个上边框在窗体中心的弹出式菜单。弹出式菜单触发受到鼠标右键或左键单击的菜单项的 Click 事件。
Private Sub Command1_Click () ' X
变量和Y
变量的尺寸。Dim xloc, yloc
'
设置X
变量和Y
变量到窗体中心。xloc = ScaleWidth / 2
yloc = ScaleHeight / 2
'
显示弹出式菜单。PopupMenu mnuEdit, vbPopupMenuCenterAlign Or _
vbPopupMenuRightButton, xloc, yloc
End Sub
使用 boldcommand 参数来指定在显示的弹出式菜单中想以粗体字体出现的菜单控件的名称。在弹出式菜单中只能有一个菜单控件被加粗。