VB.NET菜单设计初级入门[2]

如题所述

第1个回答  2022-10-15
   二.MainMenu类 MenuItem类和ContextMenu类

  虽然使用菜单设计器能够设计出各种菜单 但要真正掌握VB NET中的菜单编程 还必须了解并灵活使用MainMenu类 MenuItem类和ContextMenu类 其中MainMenu类和ContextMenu类所起的作用是相似的 它们的作用是提供一个菜单项容器 里面可以存放各种菜单项

  MainMenu类表示的是下拉菜单的结构 里面存放的菜单项其实就是MenuItem实例 在创建完MainMenu实例后 必须要把此实例绑定到要显示此菜单的Form中 下拉菜单才能够显示 而要实现这种绑定其实非常简单 只需把MainMenu实例分配给Form的Menu属性就可以了

  ContextMenu类表示当用户在控件或窗体的特定区域上单击鼠标右键时弹出的菜单结构 可视控件和Form窗体一般都有ContextMenu属性 要显示ContextMenu实例 只需把ContextMenu实例分配给要显示此弹出菜单的可视组件或Form窗体的ContextMenu 属性就可以了 多个组件可共同使用一个ContextMenu实例 MenuItem类表示的是MainMenu和ContextMenu中的每一个菜单项 显示创建的MenuItem实例 必须使用MainMenu或ContextMenu中的 Add 方法把MenuItem实例加入 若要创建子菜单 可以使用父MenuItem实例的 Add 方法把MenuItem实例添加到其MenuItems属性中

  MenuItem类还提供一些属性用以设定菜单项的外观和功能 若要显示菜单项旁边的选中标记 可以使用Checked 属性 Shortcut属性可用于设定此菜单项对应的键盘组合键

  下面就通过下面一个示例来具体了解上面三个类的使用方法    三.使用MainMenu类 MenuItem类和ContextMenu类动态创建菜单

  下面就利用mainMenu类 MenuItem类和ContextMenu类动态创建图 所示的由菜单设计器设计出的菜单 其中包括下拉菜单和弹出菜单 下面是具体步骤

   启动Visual Studio Net

   选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框

   将【项目类型】设置为【Visual Basic项目】

   将【模板】设置为【Windows应用程序】

   在【名称】文本框中输入【动态创建菜单】

   在【位置】的文本框中输入【E:\VS NET项目】 然后单击【确定】按钮 这样在 E:\VS NET项目 目录中就产生了名称为 动态创建菜单 的文件夹 并在里面创建了名称为 动态创建菜单 的项目文件

   把Visual Studio Net的当前窗口切换到【Form vb(设计)】窗口 并从【工具箱】中的【Windows窗体组件】选项卡中往Form 窗体中拖入下列组件 并执行相应操作

  二个Button组件 名称分别为Button 和Button 并在这二个组件拖入窗体后 分别设定这二个组件的 Text 属性值为 创建下拉菜单 和 创建弹出菜单 之后再分别双击 这样Visual Basic Net会在Form vb中分别产生这二个组件的Click事件对应的处理代码

   把Visual Basic Net的当前窗口切换到Form vb的代码编辑窗口 并用下拉代码替换Form vb中的Button 的Click事件对应的处理代码 下拉代码的作用是动态创建图 中的下拉菜单

Private Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim MainMenu As MainMenu = New MainMenu ( )  创建一个MainMenu实例 Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) myMenuItem Text = 文件(&F)  myMenuItem Text = 新建(&N)  myMenuItem Text =  myMenuItem Text = 打开(&O)   创建四个MenuItem实例 并进行相应设置 myMenuItem MenuItems Add ( myMenuItem ) myMenuItem MenuItems Add ( myMenuItem ) myMenuItem MenuItems Add ( myMenuItem )  以myMenuItem 是myMenuItem myMenuItem 和myMenuItem 的父菜单项 MainMenu MenuItems Add ( myMenuItem )  在MainMenu实例中加入MainItem实例 Me Menu = MainMenu   把MainMenu 指派给Form的的Menu属性 这样下拉菜单才能够显示 Button Enabled = FalseEnd Sub 

   用下列代码替换Form vb中的Button 的Click事件对应的处理代码 下拉代码的作用是动态创建图 中的弹出菜单

Private Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim ContextMenu As ContextMenu = New ContextMenu ( )  创建一个ContextMenu实例 Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) myMenuItem Text = 拷贝(&C)  myMenuItem Text = 剪切(&X)  myMenuItem Text = 粘贴(&V)   创建三个MenuItem实例 并进行相应设置 ContextMenu MenuItems Add ( myMenuItem ) ContextMenu MenuItems Add ( myMenuItem ) ContextMenu MenuItems Add ( myMenuItem )  在ContextMenu 中加入MenuItem Me ContextMenu = ContextMenu   把ContextMenu 指派给Form的ContextMenu属性 显示弹出菜单 Button Enabled = FalseEnd Sub

   至此【动态创建菜单】项目的全部工作就完成了 单击快捷键 F 运行程序 单击程序中的【创建下拉菜单】按钮 则创建出图 所示的下拉菜单 单击程序中的【创建弹出菜单】 则动态创建出图 所示的弹出菜单

  如果您要创建的菜单中的菜单项还有子菜单 可以根据菜单项中的父子关系 把子菜单项加入到父菜单项 然后再把父菜单项加入上一级的菜单项或MainMenu和ContextMenu实例中 下面代码作用是创建图 所示的下拉菜单 如果是弹出菜单 其做法类似

Private Sub Button _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles Button Click Dim ContextMenu As ContextMenu = New ContextMenu ( )  创建一个ContextMenu实例 Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) Dim myMenuItem As MenuItem = New MenuItem ( ) myMenuItem Text = 拷贝(&C)  myMenuItem Text = 剪切(&X)  myMenuItem Text = 粘贴(&V)   创建三个MenuItem实例 并进行相应设置 ContextMenu MenuItems Add ( myMenuItem ) ContextMenu MenuItems Add ( myMenuItem ) ContextMenu MenuItems Add ( myMenuItem )  在ContextMenu 中加入MenuItem Me ContextMenu = ContextMenu   把ContextMenu 指派给Form的ContextMenu属性 显示弹出菜单 Button Enabled = FalseEnd Sub

图 动态创建存在子菜单的下拉菜单

    四. Net Frame Work SDK 为在VB Net绘制菜单提供的工具

   Net Frame Work SDK为Visual Basic Net实现个性化菜单提供了许多工具 其中最重要是二个事件及其参数 DrawItem事件和其中的DrawItemEventArgs参数 MeasureItem事件和其中的MeasureItemEventArgs参数

   DrawItem事件和其中的DrawItemEventArgs参数

  DrawItem事件是当菜单项的OwnerDraw属性设置为True并且发出绘制菜单项的请求时才发生 个性化菜单制作的处理方法就是在此事件中完成的 在DrawItem事件处理程序中将接收一个 DrawItemEventArgs类型的参数 它包含与此事件相关的数据 这些数据对绘制菜单是很重要的 表 是DrawItemEventArgs类型参数提供特定于此事件的信息

    表 DrawItemEventArgs类型参数提供DrawItem事件特定的信息

   MeasureItem事件和其中的MeasureItemEventArgs参数

  触发MeasureItem事件必须将菜单项的OwnerDraw属性设置为True 个性化菜单制作可通过此事件来获取 设定菜单项的大小等 MeasureItem事件处理程序中接收一个MeasureItemEventArgs类型的参数 此参数对获取 设定菜单项的大小是非常重要的 表 是MeasureItemEventArgs类型参数提供MeasureItem事件的特定信息

                                                                表 是MeasureItemEventArgs类型参数提供MeasureItem事件的特定信息

lishixinzhi/Article/program/net/201311/15453