应用程序通过菜单为用户提供一组命令
菜单一般分为两种:下拉式菜单和弹出式菜单
10.5.1 下拉式菜单
下拉式菜单的结构
下拉式菜单基本结构包括:顶层菜单、菜单项和子菜单
10.5.2 菜单编辑器
设计菜单的工具 —— 菜单编辑器
菜单编辑器分为上、下两部分,上半部分用来设置属性,下半部分是菜单显示区,用来显示用户输入的菜单内容。
10.5.3 菜单的 Click 事件
除分隔线以外的所有菜单元素都能识别 Click 事件
例 10.8 编一程序,进行两个操作数的算术运算练习
设计步骤如下:
(1) 创建应用程序的用户界面和设置对象属性 菜单栏向用户提供功能选择,包括运算数的位数,运算符类型 ( 加、减、乘 ) 和退出程序
菜单设计
各个菜单项名称
(2) 编写程序代码
Option Explicit ‘ 规定所有变量都要显式声明,见 10.9.1 节
Dim sel1 As Integer, sel2 As String
Dim r1 As Long
Private Sub Form_Load()
sel1 = 0 ' 位数标记
sel2 = "" ' 运算标记
Randomize
End Sub
Private Sub Mnu11_Click() ‘ 单击 “ 一位数 ” 菜单项
sel1 = 1 ' 设置位数标记
End Sub
Private Sub Mnu12_Click() ‘ 单击 “ 二位数 ” 菜单项
sel1 = 10
End Sub
Private Sub Mnu13_Click() ‘ 单击 “ 三位数 ” 菜单项
sel1 = 100
End Sub
Private Sub Mnu21_Click() ‘ 单击 “ 加法 ” 菜单项
sel2 = "+" ' 设置运算标记
End Sub
Private Sub Mnu22_Click() ‘ 单击 “ 减法 ” 菜单项
sel2 = "-"
End Sub
Private Sub Mnu23_Click() ‘ 单击 “ 乘法 ” 菜单项
sel2 = "*"
End Sub
Private Sub Command1_Click() '" 命题 " 按钮单击事件
Dim a As Long, b As Long
If sel1 = 0 Or sel2 = "" Then
MsgBox " 先选择运算数的位数和运算类型 "
Exit Sub
End If
a=sel1+Int(9 * sel1 * Rnd)‘ 根据指定位数,随机生成操作数
b = sel1 + Int(9 * sel1 * Rnd)
Text1.Text = Str(a) + sel2 + Str(b) + “=”
‘ 根据操作数及运算类型组成算式
Select Case sel2 ‘ 根据运算类型,求运算结果 r1
Case "+"
r1 = a + b
Case "-"
r1 = a - b
Case "*"
r1 = a * b
End Select
Text2.Text = ""
Text2.SetFocus
End Sub
Private Sub Command2_Click() '" 答题 " 按钮单击事件
Dim r2 As Long
If Text2.Text = "" Then
MsgBox " 请输入答案 "
Exit Sub
End If
r2 = Val(Text2.Text) ' 读取用户的答案
If r1 = r2 Then ' 判断答案
MsgBox " 正确 "
Else
MsgBox " 错误 "
End If
End Sub
Private Sub Mnu30_Click() ‘“ 退出 ” 菜单命令
End
End Sub
10.5.5 弹出式菜单
弹出式菜单又称为快捷菜单。可以根据右击鼠标时的位置弹出不同的菜单。
使用 VB 提供的菜单编辑器,把某个菜单设置成隐藏。
创建快捷菜单的步骤如下:
(1) 使用菜单编辑器设计菜单
(2) 设置顶层菜单项为不可见,即不选中菜单编辑器里的 “ 可见 ” 选项或在属性窗口中设定 Visible 属性为 False
(3) 编写与弹出式菜单相关联的 MouseUp( 释放鼠标 ) 事件过程。格式为:
[对象] PopupMenu 菜单名 [, 位置常数 ][, 横坐标 [, 纵坐标 ]] ]
例 10.9 在例 10.8 的基础上,把 “ 位数 ” 菜单改为快捷菜单
(1) 打开例 10.8 的应用程序,选定窗体,然后在菜单编辑器中将 “ 位数 ” 菜单标题的 “ 可见 ” 框中的 “ √ ” 取消 ( 即不选中 )
(2) 增加以下的 MouseUp 事件过程代码:
Private Sub Form_MouseUp(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = 2 Then ‘ 检查是否右击 , 击左键为 1
PopupMenu mnu10
End If
End Sub
程序运行时,右击窗体空白处,即会弹出快捷菜单,如图所示

|