结合上一节介绍的方法通过Visual Basic Net的菜单设计器按照图和图所示的菜单结构设计菜单
图【MDI编程】项目的菜单结构之一图【MDI编程】项目的菜单结构之二 在利用菜单设计器设计完菜单后分别在窗体中双击新建退出层叠显示横行平铺纵向平铺和排列图标菜单项这样Visual Basic Net会在Formvb文件中分别产生这些菜单项的Click事件对应的处理代码
设定Form的IsMdiContainer属性值为True这把Form窗体定义为MDI窗体容器这一步设置是后面编程的基础当设置此属性值后Form的窗体也发生了改变图是设置此属性后的窗体模样
图把Form窗体设置为MDI窗体容器后的模样 选中图中的窗口菜单项并设置此菜单项的MdiList属性值为True其作用是当程序运行后如果新建了一个MDI窗体就会在窗口菜单项后自动加入一个以新建MDI窗体名称命名的菜单项如果新建了多个MDI窗体则会在窗口菜单项后会加入以这些MDI窗体名称命名的菜单项当MDI窗体被关闭那些以此MDI窗体命名的菜单项也会自动删除具体可图所示
把Visua Basic Net的当前窗口切换到Formvb的代码编辑窗口并在定义Form中组件的代码区加入下列代码下列代码是定义一个变量此变量用以统计程序中新建MDI窗体的数量
Private iFormCount As Integer =
用下列代码替换Formvb中的MenuItem的Click事件对应的处理代码MenuItem即为图中的新建菜单项下列代码的作用是在新建一个MDI窗体
Private Sub MenuItem_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles MenuItemClick
Dim frmTemp As Form = New Form ( )
新建一个窗体
frmTempMdiParent = Me
为当前创建的窗体设置MDI父窗体
frmTempText = MDI窗体 + iFormCountToString ( )
iFormCount = iFormCount +
frmTempShow ( )
把此MDI窗体显示出来
End Sub
用下列代码替换Formvb中的MenuItem的Click事件对应的处理代码MenuItem即为图中的退出菜单项下列代码的作用是退出应用程序
Private Sub MenuItem_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles MenuItemClick
ApplicationExit ( )
退出应用程序
End Sub
用下列代码替换Formvb中的MenuItem的Click事件对应的处理代码MenuItem即为图中的层叠显示菜单项下列代码的作用是层叠排列窗体中的所有MDI窗体
Private Sub MenuItem_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles MenuItemClick
MeLayoutMdi ( MdiLayoutCascade )
层叠排列窗体中的所有MDI窗体
End Sub
用下列代码替换Formvb中的MenuItem的Click事件对应的处理代码MenuItem即为图中的水平平铺菜单项下列代码的作用是水平平铺窗体中的所有MDI窗体
Private Sub MenuItem_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles MenuItemClick
MeLayoutMdi ( MdiLayoutTileHorizontal )
水平平铺窗体中的所有MDI窗体
End Sub
用下列代码替换Formvb中的MenuItem的Click事件对应的处理代码MenuItem即为图中的垂直平铺菜单项下列代码的作用是垂直平铺窗体中的所有MDI窗体
Private Sub MenuItem_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles MenuItemClick
MeLayoutMdi ( MdiLayoutTileVertical )
垂直平铺窗体中的所有MDI窗体
End Sub
用下列代码替换Formvb中的MenuItem的Click事件对应的处理代码MenuItem即为图中的排列图标菜单项下列代码的作用是窗体中的所有MDI窗体排列图标
Private Sub MenuItem_Click ( ByVal sender As SystemObject ByVal e As SystemEventArgs ) Handles MenuItemClick
MeLayoutMdi ( MdiLayoutArrangeIcons )
窗体中的所有MDI窗体排列图标
End Sub
至此【MDI编程】项目的全部工作就完成了图图和图是程序运行后的界面
图【MDI编程】运行界面之一图【MDI编程】运行界面之二 图【MDI编程】运行界面之三此时我们注意到图所示的窗口菜单中增加许多子菜单而在程序设计时并没有处理这些功能的代码这是由于第十一步中设置窗口菜单项的 MdiList属性值为True造成的可见正确的设置组件的属性值有时的确能够代替烦杂的代码编写工作
五总结
本文主要内容有二个其一是介绍的在Visual Basic Net定制不规则窗体的实现方法在Visual Basic Net中创建不规则窗体主要使用的是Region类和GraphicsPath类GraphicsPath主要是绘制窗体的形状Region主要是以GraphicsPath来构建窗体结合本文的实现思路和具体方法我想对于其他形状的窗体在掌握GraphicsPath类提供的使用方法的前提下加上对所要创建不规则窗体的规划设计用Visual Basic Net实现起来应该不算很困难
本文的另外一个主要内容就是介绍在Visual Basic Net编写MDI应用程序的基本过程技巧和注意事项通过本文的介绍可见Visual Basic Net的MDI编程并没有什么复杂的地方只需了解一些对MDI窗体处理的方法及其调用方式当然更重要的是要了解并掌握某些组件的针对MDI的属性及其设置方式