當前位置:菜譜大全網 - 素菜食譜大全 - VB.NET菜單設計入門[2]

VB.NET菜單設計入門[2]

2.MainMenu類MenuItem類和ContextMenu類雖然使用菜單設計器可以設計出各種菜單,但要真正掌握VB NET中的菜單編程,還必須了解並靈活使用MainMenu類MenuItem類和ContextMenu類,其中main menu類和ContextMenu類的作用類似。它們的作用是提供壹個菜單項容器,可以在其中存儲各種菜單項。

MainMenu類表示下拉菜單的結構,其中存儲的菜單項實際上是MenuItem實例。創建MainMenu實例後,下拉菜單只有綁定到要顯示菜單的表單時才能顯示。要實現這種綁定,將MainMenu實例分配給表單的Menu屬性實際上非常簡單。

ContextMenu類表示當用戶在控件或窗體的特定區域單擊鼠標右鍵時彈出的菜單結構。可視化控件和窗體通常具有ContextMenu屬性。要顯示ContextMenu實例,更有必要將ContextMenu實例分配給可視組件或表單的ContextMenu屬性,以顯示彈出菜單。組件可以* * *使用ContextMenu實例。MenuItem類指示顯示MainMenu和ContextMenu中的每個MenuItem。必須使用MainMenu或ContextMenu中的Add方法添加創建的MenuItem實例。若要創建子菜單,可以使用父menuitem實例的add方法將MenuItem實例添加到其MenuItem屬性中。

MenuItem類還提供了壹些屬性來設置菜單項的外觀和功能。若要在菜單項旁邊顯示復選標記,可以使用Checked屬性的Shortcut屬性,該屬性可用於設置與該菜單項對應的鍵盤組合鍵。

下面舉個例子來了解壹下上面三個類的用法。3.使用MainMenu類MenuItem類和ContextMenu類動態創建菜單。

下面我們用mainMenu類MenuItem類和ContextMenu類動態創建菜單設計者設計的菜單如圖,包括下拉菜單和彈出菜單。以下是具體步驟。

啟動Visual Studio Net

選擇菜單文件|新建|項目,將彈出新建項目對話框。

將項目類型設置為Visual Basic項目。

將模板設置為Windows應用程序。

在名稱文本框中輸入動態創建菜單。

在該位置的文本框中輸入E:\ VS . NET項目,然後單擊OK,這樣在E:\ VS . NET項目目錄中就會生成壹個名為Dynamic Creation Menu的文件夾,並在其中創建壹個名為Dynamic Creation Menu的項目文件。

將Visual Studio Net的當前窗口切換到Form vb(設計)窗口,將以下組件從工具箱的Windows Forms Components選項卡中拖動到Form窗體中,並執行相應的操作。

這兩個按鈕組件的名稱分別是Button和Button。將兩個組件拖入表單後,設置這兩個組件的文本屬性值,創建下拉菜單和彈出菜單,然後分別雙擊它們。這樣,Visual Basic Net就會在vb窗體中為這兩個組件的click事件生成相應的處理代碼。

將Visual Basic Net的當前窗口切換到vb窗體的代碼編輯窗口,將vb窗體中按鈕Click事件對應的處理代碼替換為下拉代碼。下拉代碼的功能是在圖中動態創建下拉菜單。

private Sub Button _ Click(ByVal sender As System Object ByVal e As System EventArgs)handles Button單擊dim main menu As main menu = new main menu()創建主菜單實例dim my menuitem As menuitem = new menuitem()。dim my menuitem as menuitem = new menuitem()dim my menuitem as menuitem = new menuitem()dim my menuitem as menuitem = new menuitem()my menuitem text = file(&;f)my menuitem Text = New(&;n)my menuitem text = my menuitem text = open(&;o)創建四個MenuItem實例並相應地設置它們。我的菜單項添加(我的菜單項)我的菜單項添加(我的菜單項)我的菜單項添加(我的菜單項)。使用myMenuItem作為myMenuItem myMenuItem的父菜單項,主菜單項添加(myMenuItem)。將MainItem實例me Menu = MainMenu添加到MainMenu實例中,並將主菜單賦給表單的Menu屬性,這樣下拉菜單就可以顯示Button Enabled = FalseEnd Sub。用下面的代碼替換窗體vb中按鈕的Click事件對應的處理代碼。下拉代碼的作用是動態創建圖中的彈出菜單。

private Sub Button _ Click(ByVal sender As System Object ByVal e As System EventArgs)handles Button單擊dim context menu As context menu = new context menu()創建上下文菜單實例dim my menuitem As menuitem = new menuitem()。dim my menuitem as menuitem = new menuitem()dim my menuitem as menuitem = new menuitem()my menuitem text = copy(&;c)my menuitem Text = cut(&;x)my menuitem Text = paste(&;v)創建三個MenuItem實例並相應地設置它們。上下文菜單項添加(我的菜單項)上下文菜單項添加(我的菜單項)上下文菜單項添加(我的菜單項)。將menuitem me ContextMenu = context menu添加到窗體的context menu屬性中,並顯示彈出菜單按鈕Enabled = FalseEnd Sub。至此,動態創建菜單項的工作全部完成。點擊快捷鍵f運行程序,點擊程序中的創建下拉菜單按鈕創建如圖所示的下拉菜單,點擊程序中的創建彈出菜單動態創建如圖所示的彈出菜單。

如果要創建的菜單中有菜單項和子菜單,可以根據菜單項中的父子關系將子菜單項添加到父菜單項中,然後將父菜單項添加到上壹級菜單項或MainMenu和ContextMenu的例子中。下面的代碼用於創建如圖所示的下拉菜單。如果是彈出菜單,方法類似。

private Sub Button _ Click(ByVal sender As System Object ByVal e As System EventArgs)handles Button單擊dim context menu As context menu = new context menu()創建上下文菜單實例dim my menuitem As menuitem = new menuitem()。dim my menuitem as menuitem = new menuitem()dim my menuitem as menuitem = new menuitem()my menuitem text = copy(&;c)my menuitem Text = cut(&;x)my menuitem Text = paste(&;v)創建三個MenuItem實例並相應地設置它們。上下文菜單項添加(我的菜單項)上下文菜單項添加(我的菜單項)上下文菜單項添加(我的菜單項)。將menuitem me ContextMenu = context menu添加到窗體的context menu屬性中,顯示彈出菜單按鈕enabled = false,並動態創建帶有子菜單的下拉菜單。

?4.Net Frame Work SDK是壹個在VB Net中繪制菜單的工具。

Net Frame Work SDK為Visual Basic Net實現個性化菜單提供了很多工具,其中最重要的是兩個事件及其參數,DrawItem事件和DrawItemEventArgs參數,MeasureItem事件和MeasureItemEventArgs參數。

DrawItem事件和其中的DrawItemEventArgs參數。

當菜單項的OwnerDraw屬性設置為True並發出繪制菜單項的請求時,將發生DrawItem事件。個性化菜單制作的處理方法就是在這個事件中完成的。在DrawItem事件處理程序中,將接收DrawItemEventArgs類型的參數,該參數包含與此事件相關的數據。這些數據對於繪制菜單非常重要。該表為DrawItemEventArgs,drawitemeventargs類型的參數提供了特定於該事件的信息。

?表DrawItemEventArgs類型參數提供特定於DrawItem事件的信息。

MeasureItem事件和其中的MeasureItemEventArgs參數。

若要觸發MeasureItem事件,菜單項的OwnerDraw屬性必須設置為True。通過這個活動可以實現個性化的菜單制作。MeasureItem事件處理程序接收MeasureItemEventArgs類型的參數。該參數對於獲取設置菜單項的大小非常重要。該表是MeasureItemEventArgs類型參數,它提供了MeasureItem事件的特定信息。

?表是MeasureItemEventArgs類型的參數,它提供有關MeasureItem事件的特定信息。

Lishi Xinzhi/Article/program/net/201311/15453