正在做一个多文档同时打开的小程序,自然用到MDI。
打开文档的子窗体名称为frmNote,当打开文档时,用下面的代码'为了方便管理子窗体,将它们的引用放在Wins数组中
Set Wins(Index) = New frmNote
Wins(Index).Show
在子窗体中打开文档,菜单都在主窗体上,当单击主窗体的菜单“关闭 Ctrl-W”时,就关闭显示在最前方的子窗体,从MDI主窗体调用子窗体的一个过程:'没有直接Unload Wins(Index),因为有其他方面的考虑
Public Sub CloseMe()
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Note Form_Unload"
End Sub
Private Sub Form_QueryUnload(Cancel As Integer,UnloadMode As Integer)
MsgBox "Note Form_QueryUnload"
End Sub但是奇怪的是,执行相应操作后并没有弹出应该弹出的消息框,只有点子窗体的叉号时才能弹出。求解!
打开文档的子窗体名称为frmNote,当打开文档时,用下面的代码'为了方便管理子窗体,将它们的引用放在Wins数组中
Set Wins(Index) = New frmNote
Wins(Index).Show
在子窗体中打开文档,菜单都在主窗体上,当单击主窗体的菜单“关闭 Ctrl-W”时,就关闭显示在最前方的子窗体,从MDI主窗体调用子窗体的一个过程:'没有直接Unload Wins(Index),因为有其他方面的考虑
Public Sub CloseMe()
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Note Form_Unload"
End Sub
Private Sub Form_QueryUnload(Cancel As Integer,UnloadMode As Integer)
MsgBox "Note Form_QueryUnload"
End Sub但是奇怪的是,执行相应操作后并没有弹出应该弹出的消息框,只有点子窗体的叉号时才能弹出。求解!
Option ExplicitPrivate Sub MDIForm_Unload(Cancel As Integer)
Dim frm As Form
Dim i As Long If MsgBox("确定要退出系统吗?", vbYesNo, App.Title) = vbYes Then
For Each frm In Forms
If Not frm Is Nothing Then
Unload frm
End If
Next
End If Set frm = Nothing
End Sub'Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
' Dim frm As Form
' Dim i As Long
'
' If MsgBox("确定要退出系统吗?", vbYesNo, App.Title) = vbYes Then
' For Each frm In Forms
' i = i + 1
' Debug.Print i
' If Not frm Is Nothing Then
' Unload frm
' End If
' Next
' End If
'
' Set frm = Nothing
'End SubPrivate Sub mnuFAdd_Click()
Dim newfrm As New Form1
newfrm.Show
Set newfrm = Nothing
End Sub
Unload是在关闭所有子窗体后触发,而Query_Unload事件是在关闭子窗体前触发子窗体的会触发,这要看你定义的子窗体对象是什么,你关闭的对象是不是你定义的对象。