9. 用下列代碼替換Form1.vb中的Button2的Click事件對應的處理代碼,下拉代碼的作用是動態創建圖05中的彈出菜單:
Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.Click Dim ContextMenu1 As ContextMenu = New ContextMenu ( ) '創建一個ContextMenu實例 Dim myMenuItem1 As MenuItem = New MenuItem ( ) Dim myMenuItem2 As MenuItem = New MenuItem ( ) Dim myMenuItem3 As MenuItem = New MenuItem ( ) myMenuItem1.Text = "拷貝(&C)" myMenuItem2.Text = "剪切(&X)" myMenuItem3.Text = "粘貼(&V)" '創建三個MenuItem實例,并進行相應設置 ContextMenu1.MenuItems.Add ( myMenuItem1 ) ContextMenu1.MenuItems.Add ( myMenuItem2 ) ContextMenu1.MenuItems.Add ( myMenuItem3 ) '在ContextMenu1中加入MenuItem Me.ContextMenu = ContextMenu1 '把ContextMenu1指派給Form的ContextMenu屬性,顯示彈出菜單 Button2.Enabled = False End Sub |
10. 至此【動態創建菜單】項目的全部工作就完成了,單擊快捷鍵“F5”運行程序,單擊程序中的【創建下拉菜單】按鈕,則創建出圖04所示的下拉菜單;單擊程序中的【創建彈出菜單】,則動態創建出圖05所示的彈出菜單。
如果您要創建的菜單中的菜單項還有子菜單,可以根據菜單項中的父子關系,把子菜單項加入到父菜單項,然后再把父菜單項加入上一級的菜單項或MainMenu和ContextMenu實例中,下面代碼作用是創建圖06所示的下拉菜單,如果是彈出菜單,其做法類似:
Private Sub Button2_Click ( ByVal sender As System.Object , ByVal e As System.EventArgs ) Handles Button2.Click Dim ContextMenu1 As ContextMenu = New ContextMenu ( ) '創建一個ContextMenu實例 Dim myMenuItem1 As MenuItem = New MenuItem ( ) Dim myMenuItem2 As MenuItem = New MenuItem ( ) Dim myMenuItem3 As MenuItem = New MenuItem ( ) myMenuItem1.Text = "拷貝(&C)" myMenuItem2.Text = "剪切(&X)" myMenuItem3.Text = "粘貼(&V)" '創建三個MenuItem實例,并進行相應設置 ContextMenu1.MenuItems.Add ( myMenuItem1 ) ContextMenu1.MenuItems.Add ( myMenuItem2 ) ContextMenu1.MenuItems.Add ( myMenuItem3 ) '在ContextMenu1中加入MenuItem Me.ContextMenu = ContextMenu1 '把ContextMenu1指派給Form的ContextMenu屬性,顯示彈出菜單 Button2.Enabled = False End Sub |
圖06:動態創建存在子菜單的下拉菜單
四..Net Frame Work SDK 為在VB.Net繪制菜單提供的工具:
.Net Frame Work SDK為Visual Basic .Net實現個性化菜單提供了許多工具。其中最重要是二個事件及其參數:DrawItem事件和其中的DrawItemEventArgs參數,MeasureItem事件和其中的MeasureItemEventArgs參數。
1. DrawItem事件和其中的DrawItemEventArgs參數:
DrawItem事件是當菜單項的OwnerDraw屬性設置為True并且發出繪制菜單項的請求時才發生。個性化菜單制作的處理方法就是在此事件中完成的。在DrawItem事件處理程序中將接收一個 DrawItemEventArgs類型的參數,它包含與此事件相關的數據,這些數據對繪制菜單是很重要的。表01是DrawItemEventArgs類型參數提供特定于此事件的信息。
表01:DrawItemEventArgs類型參數提供DrawItem事件特定的信息
2. MeasureItem事件和其中的MeasureItemEventArgs參數:
觸發MeasureItem事件必須將菜單項的OwnerDraw屬性設置為True,個性化菜單制作可通過此事件來獲取、設定菜單項的大小等。MeasureItem事件處理程序中接收一個MeasureItemEventArgs類型的參數,此參數對獲取、設定菜單項的大小是非常重要的。表02是MeasureItemEventArgs類型參數提供MeasureItem事件的特定信息。
表02是MeasureItemEventArgs類型參數提供MeasureItem事件的特定信息
文章來源于領測軟件測試網 http://www.kjueaiud.com/