VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > VB.net教程 >
  • vb.net详解MDI窗体操作方法

MDI窗体可以避免打开窗体的时候被无数个子窗体困扰,我将为大家一一的介绍一下vb.net中MDI窗体的操作方法

一、如何创建MDI窗体?

1、创建mdi主窗体

新建建立一个默认空白的Windows应用程序,在Form1窗体的属性窗口中找到IsMDIContainer 属性,设置为 True

2、创建MDI子窗体

在vb.net中,mdi子窗体就是普通的窗体,无需更改其属性。所有直接新建一个Form2

3、添加代码

 


  1.  
    Dim frm2 As New Form2
  2.  
    Form2.Show()
此时你只需要简单的实例化一下显示出来就可以了,非常简单吧。

 

 

二、显示MDI窗口列表

用过带有子窗体的程序的朋友一定知道,很多程序都带显示它它本身打开的子窗体列表的功能,那么它是怎么实现的呢

现在在父窗体中修改你的MenuScript1控件的MdiWinddowListItem属性为你要设置的菜单即可。

 

三、排列子窗体

你只需要在你的单击操作中填入以下代码即可

 


  1.  
    Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem2.Click
  2.  
    Me.LayoutMdi(MdiLayout.TileHorizontal) '水平平铺
  3.  
    End Sub
  4.  
     
  5.  
    Private Sub ToolStripMenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem3.Click
  6.  
    Me.LayoutMdi(MdiLayout.TileVertical) '垂直平铺
  7.  
    End Sub
  8.  
     
  9.  
    Private Sub ToolStripMenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem4.Click
  10.  
    Me.LayoutMdi(MdiLayout.Cascade) '层叠
  11.  
    End Sub

 

 

看一下效果图

 

 

 

 

四、VB.NET 如何防止重复打开MDI子窗体?

 


  1.  
    Private Sub 窗体1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 窗体1ToolStripMenuItem.Click
  2.  
    Dim frm2 As New Form2
  3.  
    CheckForm(frm2, "Form2")
  4.  
    frm2.WindowState = FormWindowState.Normal
  5.  
    ShowForm(Form2)
  6.  
    End Sub
  7.  
     
  8.  
    '*****************************************************************************
  9.  
    '*过程名称:CheckForm
  10.  
    '*参数说明:MDIChildForm——需检测的窗体;MDIChildFormName ——检测窗体的名字
  11.  
    '*功能说明:首先检测是否有MDI子窗体,如果没有,则创该MDI子窗体的窗体实例
  12.  
    '* 如果有,则检测当中有没有其窗体实例,有则激活;没有则创建其窗体实例
  13.  
    '*****************************************************************************
  14.  
    Private Sub CheckForm(ByVal MDIChildForm As Form, ByVal MDIChildFormName As String)
  15.  
    If Me.MdiChildren.Length < 1 Then
  16.  
    '如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例
  17.  
    ShowForm(MDIChildForm)
  18.  
    Exit Sub
  19.  
    Else
  20.  
    Dim x As Integer
  21.  
    Dim frmyn As Boolean
  22.  
    For x = 0 To (Me.MdiChildren.Length) - 1
  23.  
    Dim tempChild As Form = CType(Me.MdiChildren(x), Form)
  24.  
    If tempChild.Name = MDIChildFormName Then
  25.  
    frmyn = True
  26.  
    '检测到有该MDI子窗体,设为TRUE 并退出循环
  27.  
    Exit For
  28.  
    Else
  29.  
    frmyn = False
  30.  
    End If
  31.  
    Next
  32.  
    If frmyn = False Then
  33.  
    '在打开的窗体中没检测到则新建
  34.  
    ShowForm(MDIChildForm)
  35.  
    Else
  36.  
    '在打开的窗体中检测到则激活
  37.  
    Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)
  38.  
    MDIChildFrm.Activate() '使子窗体激活
  39.  
    MDIChildFrm.WindowState = FormWindowState.Normal
  40.  
    End If
  41.  
    End If
  42.  
    End Sub
  43.  
     
  44.  
    '**************************************************
  45.  
    '*过程名称:ShowForm
  46.  
    '*参数说明:MDIChildForm ——需创建实例的窗体
  47.  
    '*功能说明:创建窗体实例
  48.  
    '**************************************************
  49.  
    Private Sub ShowForm(ByVal MDIChildForm As Form)
  50.  
    Dim MDIChildFrm As Form = MDIChildForm
  51.  
    MDIChildFrm.MdiParent = Me ' 定义MDI子窗体
  52.  
    MDIChildFrm.Show() '打开窗体
  53.  
    End Sub
  54.  
     
  55.  
     
  56.  
    Private Sub MenuStrip1_ItemClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked
  57.  
     
  58.  
    End Sub
  59.  
     
  60.  
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  61.  
    Dim frm2 As New Form2
  62.  
    CheckForm(frm2, "Form2")
  63.  
    frm2.WindowState = FormWindowState.Maximized
  64.  
    End Sub
  65.  
    End Class
  66.  
     
 

 

 

好了,关于MDI子窗体的先介绍到这,有什么不足或者不正确的地方,提出来一起交流。
相关教程