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  = 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