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