在Windows95、Windows98或NT的風格中,有按動鼠標器右鍵彈出下拉菜單的操作,在VB執行環境下,有一些控件本身具有彈下拉菜單的功能,如TexTbox控件等,但大多數編輯類控件以及窗體本身卻沒有此功能,要在窗口中任意位置實現PopUpMenu(彈出式菜單),可借助VB的菜單工具來實現。
首先,打開VB的“工具”菜單條,利用“菜單編輯器”為窗體生成一個菜單:
標題(Caption) 菜單條名(Name)
編輯 menuEdit
……復制 mnuCopy
……剪切 munCut
其次,將生成的menuEdit菜單設置為不可視。
Private Sub Form_Load()
Me.menuEdit.Visibe=False
′menuEdit菜單設置為不可視
End Sub
然後,利用MouseDown事件實現任意位置彈出PopUpMenu,如下例:
本例中以RichTexBox控件為例,在其上面實現復制、剪切功能。
1.復制功能的實現。
Private Sub MnuCopy_Click()
Clipboar.Clear′將剪貼板清空
′將RichTexBox控件上選擇上的內容復制到剪貼板
Clipboard.SetTextRichTexBox1.SelText
End Sub
2.剪切功能的實現。
Private Sub MnuCut_Click()
Clipboard.Clear ′將剪貼板清空
′將RichTextBox控件上選擇了的內容復制到剪貼板
Clipboard.SetTextRichBox1.SelText
′將RichTexBox控件上選擇了的內容刪除
SendKeys″{DELETE}″,True
End Sub
3.在RichTexBox控件的MouseDown事件中實現任意位置彈出PopUPMenu。
OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Single,Y As Single)
Dim MnuFile AS Menu ′聲明一個菜單類型的變量
Set munFile=Me.MenuEdit ′將MenuEdit賦給菜單變量
if Button=2 Then ′判斷是否按動鼠標器右鍵
′判斷RichTexBox控件上選擇了的內容是否存在,決定復制、剪切菜單條是否可操作。
If Len(RichTexBox.Text)=0 Or Len(RichTexBox.SelText)=0 Then
mnuCopy.Enabled=Flase ′復制菜單條不可操作。
nmuCut.Enabled=False ′剪切菜單條不可操作。
nmuCopy.Enabled=True ′復制菜單條可操作。
nmuCut.Enabled=True ′剪切菜單條可操作。
End
PopupMenu mnuFile ′彈出PopUpMenu。
End If
End Sub
這樣,在VB執行環境中,操作窗體上的RichTexBox控件,按動鼠標器右鍵就可彈出下拉菜單,實現復制、剪切功能。