VB重复打开子窗体
|
admin
2013年12月3日 0:33
本文热度 9123
|
VB防止重复打开子窗体
还有怎么获取最近打开的子窗体
VB不是VB.net
该文章在 2013/12/3 0:33:48 编辑过
| |
全部评论3 |
|
admin
2013年12月3日 0:33
VB.NET中,在访问窗体之前,你必须进行窗体实例化,然后才能打开,如:Dim frm1 As New Form1' frm1.MdiParent = Me ' 定义MDI子窗体frm.Show() '打开窗体如果在项目中有多处代码访问同一窗体,都这样的话,则会创建出
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
该评论在 2013/12/3 0:33:53 编辑过
|
|
admin
2013年12月3日 0:34
Dim objAllFrom As Form
For Each objallform In Forms
If objAllFrom.Name = 窗体名称 Then
处理方法
Else
End If
Next
该评论在 2013/12/3 0:34:08 编辑过
|
|
admin
2013年12月3日 0:55
其中的方法就是打开前 卸载所有已打开的窗体
给你个过程 你自己调用吧~
'卸载所有窗体
Public Sub UnloadAllForms(Optional sFormName As String = )
Dim Form As Form
For Each Form In Forms
If Form.Name <> sFormName Then
Unload Form
Set Form = Nothing
End If
Next Form
End Sub
该评论在 2013/12/3 0:55:22 编辑过
|