VB.NET中,在訪問(wèn)窗體之前,你必須進(jìn)行窗體
實(shí)例化,然后才能打開(kāi),如:Dim frm1 As New Form1' frm1.MdiParent = Me ' 定義MDI子窗體frm.Show() '打開(kāi)窗體如果在項(xiàng)目中有多處代碼訪問(wèn)同一窗體,都這樣的話,則會(huì)創(chuàng)建出
VB.NET中,在訪問(wèn)窗體之前,你必須進(jìn)行窗體
實(shí)例化,然后才能打開(kāi),如:
Dim frm1 As New Form1
' frm1.MdiParent = Me ' 定義MDI子窗體
frm.Show() '打開(kāi)窗體
如果在項(xiàng)目中有多處代碼訪問(wèn)同一窗體,都這樣的話,則會(huì)創(chuàng)建出不同的實(shí)例。如重防止重復(fù)打開(kāi)MDI子窗體的實(shí)例呢?下面的代碼可以幫你完成:
Dim frm1As New Form1
CheckForm(frm1, "Form1")
'*****************************************************************************'*過(guò)程名稱(chēng):CheckForm
'*參數(shù)說(shuō)明:MDIChildForm需檢測(cè)的窗體;MDIChildFormName 檢測(cè)窗體的名字
'*功能說(shuō)明:首先檢測(cè)是否有MDI子窗體,如果沒(méi)有,則創(chuàng)該MDI子窗體的窗體實(shí)例
'* 如果有,則檢測(cè)當(dāng)中有沒(méi)有其窗體實(shí)例,有則激活;沒(méi)有則創(chuàng)建其窗體實(shí)例
'*****************************************************************************
Private Sub CheckForm(ByVal MDIChildForm As Form, ByVal MDIChildFormName As String)
If Me.MdiChildren.Length < 1 Then
'如果沒(méi)有任何一個(gè)MDI子窗體,則創(chuàng)該MDI子窗體的窗體實(shí)例
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
'檢測(cè)到有該MDI子窗體,設(shè)為T(mén)RUE 并退出循環(huán)
Exit For
Else
frmyn = False
End If
Next
If frmyn = False Then
'在打開(kāi)的窗體中沒(méi)檢測(cè)到則新建
ShowForm(tempForm)
Else
'在打開(kāi)的窗體中檢測(cè)到則激活
Dim MDIChildFrm As Form = CType(Me.MdiChildren(x), Form)
MDIChildFrm .Activate()
End If
End If
End Sub
'**************************************************
'*過(guò)程名稱(chēng):ShowForm
'*參數(shù)說(shuō)明:MDIChildForm 需創(chuàng)建實(shí)例的窗體
'*功能說(shuō)明:創(chuàng)建窗體實(shí)例
'**************************************************
Private Sub ShowForm(ByVal MDIChildForm As Form)
Dim MDIChildFrm As Form = MDIChildForm
MDIChildFrm.MdiParent = Me ' 定義MDI子窗體
MDIChildFrm.Show() '打開(kāi)窗體
End Sub