vb.net多级菜单 vb添加多个菜单

VB.net怎么制作树形菜单?。?/h2>你说的“树形菜单”是指下拉菜单(可以有子菜单)吗?如果是,VB.net提供了MenuStrip控件,在工具箱里能找到,直接就在对应位置打字就可以了,完全是“所见即所得” 。
vb如何实现下拉菜单的二级联动?啥叫“下拉菜单”?到底是要做菜单vb.net多级菜单,还是做下拉列表?!
如果是做菜单vb.net多级菜单,那就直接设置好一、二级菜单vb.net多级菜单;
如果是下拉列表,那就在一级列表的click事件中,根据选择的项目,动态设置二级列表的内容就行了 。
VB.net如何动态创建ContextMenuStrip控件,并写入三个菜单选项,每个选项菜动态生成的控件: Private Sub UserControl1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.LoadDim myPicture = New System.Windows.Forms.PictureBox()Me.Panel3.Controls.Add(myPicture)myPicture.Size = New System.Drawing.Size(115, 160)myPicture.TabStop = FalsemyPicture.Name = "p"myPicture.Cursor = Cursors.HandAddHandler myPicture.Click, AddressOf mypic_Click '添加事件End Sub处理事件的过程: Private Sub mypic_Click() 'ByVal id As StringDim bookInfo As New BookInfobookInfo.Show()Me.Parent.Enabled = Fals
VB.NET菜单设计初级入门[3]五.绘制个性化菜单
先执行以下操作步骤 下列步骤是通过菜单编辑器设计一个简单的菜单 为后面重新绘制做基础
启动Visual Studio Net
选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框
将【项目类型】设置为【Visual Basic项目】
将【模板】设置为【Windows应用程序】
在【名称】文本框中输入【自己画菜单】
在【位置】的文本框中输入【E:\VS NET项目】 然后单击【确定】按钮 这样在 E:\VS NET项目 目录中就产生了名称为 自己画菜单 的文件夹 并在里面创建了名称为 自己画菜单 的项目文件
把Visual Studio Net的当前窗口切换到【Form vb(设计)】窗口 并从【工具箱】中的【Windows窗体组件】选项卡中往Form 窗体中拖入下列组件
一个MainMenu组件 名称为 MainMenu
选中 MainMenu 组件 单击鼠标右键 在弹出的菜单中选择 编辑菜单 并按照图 所示界面设计菜单
图 【自己画菜单】项目设计界面之一
此时保存上述步骤 并单击快捷键F 则得到图 所示界面
图 【自己画菜单】运行界面之一
这样通过菜单编辑器就完成了一个非常普通的菜单 下面就对此菜单进行改造 在改造之前 要先设定项目中的三个MenuItem类实例的OwnerDraw属性值为 True 因为只有此属性值为 True 才会触发绘制菜单时所需要的DrawItem事件和MeasureItem事件 之后再在上面项目的基础上执行下一步操作
把Visual Stuido Net的当前窗口切换到Form vb的代码编辑窗口 并在InitializeComponent过程之后添加下列代码 下列代码是绘制 文件 菜单项 其作用是改变 文件 菜单项的字体 大小和菜单项的 其具体的绘制方法请参考下列代码中的注释
Private Sub MenuItem _DrawItem ( ByVal sender As Object ByVal e As System Windows Forms DrawItemEventArgs ) Handles MenuItem DrawItem Dim rfBound As RectangleF = New RectangleF ( e Bounds X e Bounds Y e Bounds Width e Bounds Height )根据DrawItemEventArgs参数获得菜单项矩形区域并存储到RectangleF类型实例中 Dim rfBound As Rectangle = New Rectangle ( e Bounds X e Bounds Y e Bounds Width e Bounds Height )根据DrawItemEventArgs参数获得菜单项矩形区域并存储到Rectangle类型实例中Rectangle类型实例和RectangleF类型实例差不多 但在后面代码中绘制菜单的函数是有区别的e Graphics FillRectangle(New SolidBrush(Color LightGreen) rfBound) 以LightGreen色彩填充MenuItem 菜单项对应的矩形区域 Dim s As MenuItem = CType ( sender MenuItem ) Dim s As String = s Text获得MenuItem 菜单项的名称 Dim sfTemp As StringFormat = New StringFormat ( ) sfTemp Alignment = StringAlignment Center设定要画的菜单名称的对齐方式 中间对齐 e Graphics DrawString ( s New Font ( 宋体 FontStyle Bold ) New SolidBrush ( Color Black ) rfBound sfTemp )以中间对齐方式 指定字体 大小 在指定的矩形区域重画菜单 If e State = ( DrawItemState NoAccelerator Or DrawItemState Selected ) Then 根据菜单项的当前绘制状态来绘制菜单项 e Graphics FillRectangle ( New SolidBrush ( Color LightYellow ) rfBound ) 对菜单项所在的矩形区域进行色彩填充 e Graphics DrawString ( s New Font ( 宋体 FontStyle Bold ) New SolidBrush ( Color Black ) rfBound sfTemp )对菜单项名称绘制 End If e DrawFocusRectangle ( )在 DrawItemEventArgs参数得到矩形范围内绘制聚焦框e Graphics DrawRectangle ( New Pen ( New SolidBrush ( Color Black ) ) rfBound )对菜单项的矩形区域绘制矩形框End Sub

推荐阅读