MDI窗体可以避免打开窗体的时候被无数个子窗体困扰,我将为大家一一的介绍一下vb.net中MDI窗体的操作方法
新建建立一个默认空白的Windows应用程序,在Form1窗体的属性窗口中找到IsMDIContainer 属性,设置为 True
在vb.net中,mdi子窗体就是普通的窗体,无需更改其属性。所有直接新建一个Form2
- Dim frm2 As New Form2
- Form2.Show()
用过带有子窗体的程序的朋友一定知道,很多程序都带显示它它本身打开的子窗体列表的功能,那么它是怎么实现的呢
现在在父窗体中修改你的MenuScript1控件的MdiWinddowListItem属性为你要设置的菜单即可。
你只需要在你的单击操作中填入以下代码即可
- Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
- Me.LayoutMdi(MdiLayout.TileHorizontal) '水平平铺
- End Sub
- Private Sub ToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem3.Click
- Me.LayoutMdi(MdiLayout.TileVertical) '垂直平铺
- End Sub
- Private Sub ToolStripMenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem4.Click
- Me.LayoutMdi(MdiLayout.Cascade) '层叠
- End Sub
看一下效果图- Private Sub 窗体1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 窗体1ToolStripMenuItem.Click
- Dim frm2 As New Form2
- CheckForm(frm2, "Form2")
- frm2.WindowState = FormWindowState.Normal
- ShowForm(Form2)
- End Sub
- '*****************************************************************************
- '*过程名称:CheckForm
- '*参数说明:MDIChildForm——需检测的窗体;MDIChildFormName ——检测窗体的名字
- '*功能说明:首先检测是否有MDI子窗体,如果没有,则创该MDI子窗体的窗体实例
- '* 如果有,则检测当中有没有其窗体实例,有则激活;没有则创建其窗体实例
- '*****************************************************************************
- Private Sub CheckForm(ByVal MDIChildForm As Form, ByVal MDIChildFormName As String)
- If Me.MdiChildren.Length < 1 Then
- '如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例
- ShowForm(MDIChildForm)
- Exit Sub
- Else
- Dim x As Integer
- Dim frmyn As Boolean
- For x = 0 To (Me.MdiChildren.Length) - 1
- Dim tempChild As Form = CType(Me.MdiChildren(x), Form)
- If tempChild.Name = MDIChildFormName Then
- frmyn = True
- '检测到有该MDI子窗体,设为TRUE 并退出循环
- Exit For
- Else
- frmyn = False
- End If
- Next
- If frmyn = False Then
- '在打开的窗体中没检测到则新建
- ShowForm(MDIChildForm)
- Else
- '在打开的窗体中检测到则激活
- Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)
- MDIChildFrm.Activate() '使子窗体激活
- MDIChildFrm.WindowState = FormWindowState.Normal
- End If
- End If
- End Sub
- '**************************************************
- '*过程名称:ShowForm
- '*参数说明:MDIChildForm ——需创建实例的窗体
- '*功能说明:创建窗体实例
- '**************************************************
- Private Sub ShowForm(ByVal MDIChildForm As Form)
- Dim MDIChildFrm As Form = MDIChildForm
- MDIChildFrm.MdiParent = Me ' 定义MDI子窗体
- MDIChildFrm.Show() '打开窗体
- End Sub
- Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked
- End Sub
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Dim frm2 As New Form2
- CheckForm(frm2, "Form2")
- frm2.WindowState = FormWindowState.Maximized
- End Sub
- End Class
联系客服