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事件的特定信息
文章来源于领测软件测试网 https://www.ltesting.net/