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

王朝c#·作者佚名  2006-12-17
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航