分享

vb.net详解MDI窗体操作方法

 nxhujiee 2019-10-18

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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多