所有3個事件都會觸發,但Terminate事件在您期望時可能不會被觸發。
創建一個由1種MDI形式,1個MDI子窗體,1個範式的測試項目,並添加以下代碼:
MDI形式:
'MDI form : name=MDIForm1
Option Explicit
Private Sub MDIForm_Click()
End
End Sub
Private Sub MDIForm_Load()
Form1.Show
Form2.Show vbModeless, Me
WindowState = vbMaximized
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI form QueryUnload event"
End Sub
Private Sub MDIForm_Terminate()
MsgBox "MDI form Terminate event"
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
MsgBox "MDI form Unload event"
End Sub
MDI子:
'1 form: name=Form1 MDIChild=true
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "MDI child QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "MDI child Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "MDI child Unload event"
End Sub
正常形式:
'1 form: name=Form2
Option Explicit
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
MsgBox "Form2 QueryUnload event"
End Sub
Private Sub Form_Terminate()
MsgBox "Form2 Terminate event"
End Sub
Private Sub Form_Unload(Cancel As Integer)
MsgBox "Form2 Unload event"
End Sub
您將看到QueryUnload和Unload事件被觸發(按此順序),但是當您關閉MDI表單時觸發Terminate事件。
當您單擊MDI窗體的背景,然後End
將被調用,任何情況下,被解僱
你怎麼關閉應用程序?你是否在任何地方使用「結束」? – Hrqls 2014-09-30 06:02:35
保存窗口位置時,請記住您還需要保存窗體是最大化,最小化還是正常。只有在正常情況下才能保存位置。這可能會很棘手。我通常將值保存在resize事件中而不是關閉時,以確保獲得「良好」值。 – 2014-10-02 15:16:52
呃..「End」..是Hrqls通過單擊MDI父項的方式。在我的語言中,右上角是標準的關閉十字。在這種情況下,我必須這樣做..這就是爲什麼我沒有得到任何事件發射。 – snark 2014-10-03 03:12:31