定义一个form类型的变量,初始时指向mdiform,在调入子窗口前判断该变量是否指向mdiform,如果不是且该窗口变量的名称不等于即将调入的窗口的名称,则unload,然后调入子窗口,再将窗口变量指向子窗口. 比如:Dim m_ActiveForm As Form Private Sub Form_Load() Set m_ActiveForm = Me End Sub Private Sub BButon_Click(Index As Integer) Dim OldForm As Form
Set OldForm = m_ActiveForm Select Case Index Case 0 '登记委托业务 Set m_ActiveForm = frm登记委托业务 Case 1 '登记银行存款 Set m_ActiveForm = frm登记银行存款 Case 2 '登记财务费用 Set m_ActiveForm = frm登记财务费用 '... End Select If m_ActiveForm.Name = OldForm.Name Then Exit Sub If OldForm.Name <> frmDesktop.Name Then Unload OldForm Load m_ActiveForm m_ActiveForm.Move 0, 0 m_ActiveForm.Show End Sub
在調用窗體時,按如下方式,可以避免不能再加載子窗體, Private Sub mnuA_Click() If Forms.Count <= 1 Then Form1.Show End If End SubPrivate Sub mnuB_Click() If Forms.Count <= 1 Then Form2.Show End If End SubPrivate Sub mnuC_Click() If Forms.Count <= 1 Then Form3.Show End If End Sub 表示,只有在MDI中沒有打開窗體時,才能打開其子窗體。這種方式不能鎖定菜單,只是控制點擊菜單無效。
先判定当前是否有子窗体打开 'MDIForm1 Option ExplicitPrivate Sub mnuOpen1_Click() If Me.ActiveForm Is Nothing Then Form1.Show End If End SubPrivate Sub mnuOpen2_Click() If Me.ActiveForm Is Nothing Then Form2.Show End If End SubPrivate Sub mnuOpen3_Click() If Me.ActiveForm Is Nothing Then Form3.Show End If End Sub
[code=VB If Not Me.ActiveForm Is Nothing Then
mnu.Enabled = False
Else
mnu.Enabled = True
End If[/code]
mnu.Enabled = False
Else
mnu.Enabled = True
End If
http://download.csdn.net/source/1604378
比如:Dim m_ActiveForm As Form
Private Sub Form_Load()
Set m_ActiveForm = Me
End Sub
Private Sub BButon_Click(Index As Integer)
Dim OldForm As Form
Set OldForm = m_ActiveForm
Select Case Index
Case 0 '登记委托业务
Set m_ActiveForm = frm登记委托业务
Case 1 '登记银行存款
Set m_ActiveForm = frm登记银行存款
Case 2 '登记财务费用
Set m_ActiveForm = frm登记财务费用
'...
End Select
If m_ActiveForm.Name = OldForm.Name Then Exit Sub
If OldForm.Name <> frmDesktop.Name Then Unload OldForm
Load m_ActiveForm
m_ActiveForm.Move 0, 0
m_ActiveForm.Show
End Sub
Private Sub mnuA_Click()
If Forms.Count <= 1 Then
Form1.Show
End If
End SubPrivate Sub mnuB_Click()
If Forms.Count <= 1 Then
Form2.Show
End If
End SubPrivate Sub mnuC_Click()
If Forms.Count <= 1 Then
Form3.Show
End If
End Sub
表示,只有在MDI中沒有打開窗體時,才能打開其子窗體。這種方式不能鎖定菜單,只是控制點擊菜單無效。
'MDIForm1
Option ExplicitPrivate Sub mnuOpen1_Click()
If Me.ActiveForm Is Nothing Then
Form1.Show
End If
End SubPrivate Sub mnuOpen2_Click()
If Me.ActiveForm Is Nothing Then
Form2.Show
End If
End SubPrivate Sub mnuOpen3_Click()
If Me.ActiveForm Is Nothing Then
Form3.Show
End If
End Sub
模式显示,这是正确答案!