[初学VB.NET]如何防止重复打开MDI子窗体

VB.NET中,在访问窗体之前,你必须进行窗体实例化,然后才能打开,如:
           Dim frm1 As New Form1
          ' frm1.MdiParent = Me ' 定义MDI子窗体
           frm.Show() '打开窗体

如果在项目中有多处代码访问同一窗体,都这样的话,则会创建出不同的实例。如重防止重复打开MDI子窗体的实例呢?下面的代码可以帮你完成:

Dim frm1As New Form1
CheckForm(frm1, "Form1")

'*****************************************************************************
'*过程名称: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(tempForm)
            Else
               '在打开的窗体中检测到则激活
                Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)
                MDIChildFrm .Activate()
              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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值