Form_QueryUnload
폼이 언로드 될 때 이벤트 순서는 Form_QueryUnload, Form_Unload, Form_Terminate 순서입니다.
End문은 Unload 계열 이벤트를 타지 않습니다.
그리고 Unload 와 QueryUnload의 큰 차이점은
Unload는 종료를 취소할 것인지 종료될 때 어떤 값을 레지스트리나 파일에 저장한다던지 할 때 보통 씁니다.
QueryUnload는 조금더 구체적으로 종료를 취소할 것은 물론이고 어떤식으로 폼이 언로드 되나 체크할 때 씁니다.
예를들면 다음과 같습니다. 'Cancel = True 주석부분을 풀어주면 사용자가 폼의 x를 눌러도 프로그램은 종료가 되지 않겠죠.
이럴 때 보통 씁니다. 아래 소스에서 MsgBox가 주석과도 같으니 아래 소스를 참고하시기 바랍니다. 즐프하세요.
Private Sub Command1_Click()
Unload Me
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) '1
Select Case UnloadMode
Case vbFormControlMenu
'Cancel = True
MsgBox "폼 우측 상단의 x를 눌러 종료함"
Case vbFormCode
MsgBox "Unload 폼명 등 코딩으로 종료함"
Case vbAppWindows
MsgBox "현재 Windows 세션 종료. 컴퓨터를 꺼서 자동으로 프로그램이 종료함"
Case vbAppTaskManager
MsgBox "Ctrl+Alt+Del 키를 눌러 프로그램 목록에서 폼을 종료함"
Case vbFormMDIForm
MsgBox "MDI 폼이 닫히므로 MDI 하위 폼을 닫음"
Case vbFormOwner
MsgBox "폼의 소유자가 닫히므로 폼을 닫음"
End Select
End Sub