在 Visual Basic 中可以用 Checked 属性来创建复选标志。通过选取被标记为 Checked 的复选框来设置菜单编辑器中的 Checked 属性的初始值。在运行时要从一个菜单控件上增加或删除复选标志,可以从代码中设置它的Checked 属性。例如:
Private Sub mnuOptions_Click ()
'根据 Visible 属性设置复选标志的状态。
mnuOptionsToolbar.Checked = picToolbar.Visible
End Sub
使菜单控件不可见
在菜单编辑器中,通过选取被标记为 Visible 的复选框,可以设置菜单控件的 Visible 属性的初值。在运行时,要使一个菜单控件可见或不可见,可以从代码中设置其 Visible 属性。例如:
mnuFileArray(0).Visible = True ' 使控件可见。
mnuFileArray(0).Visible = False ' 使控件不可见。
当一个菜单控件不可见时,菜单中的其余控件会上移以填补空出的空间。如果控件位于菜单栏上,则菜单栏上其余的控件会左移以填补该空间。
注意 使菜单控件不可见也产生使之无效的作用,因为该控件通过菜单、访问键或者快捷键都再无法访问。如果菜单标题不可见,则该菜单上所有控件均无效。
运行时添加菜单控件
运行时菜单可以增长。例如:在图 6.13 中 作为 SDI NotePad 应用程序中被打开的文件,会动态地创建菜单项来显示刚打开文件的路径名。
运行时为了创建控件必须使用控件数组。因为设计时对mnuRecentFile菜单控件的 Index 属性进行了赋值,它自动地成为控件数组的一个元素——即使还没有创建其它元素。
当创建 mnuRecentFile(0) 时,实际上创建了一个在运行时不可见的分隔符条。当运行时用户第一次存储一个文件时,这个分隔符条就会变得可见,且第一个文件名被加到该菜单上。运行时每存储一个文件,则会再装入一个菜单控件到该数组中,从而使该菜单增长。
运行时所创建的控件可以使用 Hide 方法或者设置该控件的 Visible 属性为False 来隐藏。如果要从内存中删除一个控件数组中的控件,请使用 Unload语句。
编写菜单控件的代码
当用户选取一个菜单控件时,一个 Click 事件出现。需要在代码中为每个菜单控件编写一个 Click 事件过程。除分隔符条以外的所有菜单控件(以及无效的或不可见的菜单控件)都能识别 Click 事件。
在菜单事件过程中编写的代码与在控件任何其它事件过程中编写的代码完全相同。例如:“文件”菜单中的“关闭”菜单项的 Click 事件的代码看上去如下:
Sub mnuFileClose_Click()
Unload Me
End Sub
一旦菜单标题被选取,Visual Basic 将自动地显示出一个菜单;但是,没有必要为一个菜单标题的 Click 事件过程编写代码,除非想执行其它操作,比如每次显示菜单时使某些菜单项无效。
注意 在设计时,当关闭菜单编辑器时,所创建的菜单将显示在窗体上。在窗体上选取一个菜单项将显示那个菜单控件的 Click 事件过程。
显示弹出式菜单
弹出式菜单是独立于菜单栏而显示在窗体上的浮动菜单。在弹出式菜单上显示的项目取决于按下鼠标右键时指针所处的位置;因而,弹出式菜单也被称为上下文菜单。
在 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 属性会被忽略。
Flags 参数
在PopupMenu 方法中使用 flags 参数可以进一步定义弹出式菜单的位置与性能。下表列出了可用于描述弹出式菜单位置的标志。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




