在
Form 的 QueryUnload 事件中加上判斷即可
使用者按下 Form 的 右上角 X 時會觸發這個事件
• 參數部分:Cancel 為是否要取消離開的動作 (某些視窗關不掉就有可能是 不管使用者怎麼點 此項都設為 1)
UnloadMode 請參考
知識+複製程式
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'--------------- Specify Value ----------------
Dim HasNotSaved As Boolean '紀錄文字在儲存後 或 剛開始後 是否已被變動
HasNotSaved = True
'----------------------------------------------
If HasNotSaved Then
Select Case UnloadMode
Case 1 To 3
'Measure of Backup
'-------------------
Case Else
Select Case MsgBox("尚未儲存。 是否要儲存目前的變更?", vbQuestion + vbYesNoCancel + vbDefaultButton1, "這不是記事本")
Case vbYes
'Save to Files
Case vbNo
'Exit Directly
Case vbCancel
Cancel = 1
End Select
'--------------------
End Select
End If
End Sub
以上用 HasNotSaved 模擬記事本中文字已被修改,則此項為 True
在離開時被偵測到,而 除了 UnloadMode 2~3 是不正常的關閉外(可採用備份措施)
通常都是使用者按下 X 會讓 UnloadMode = 0 而就是最內層的 Select Case … End Select
最核心的程式碼如下:
複製程式
Select Case MsgBox("尚未儲存。 是否要儲存目前的變更?", vbQuestion + vbYesNoCancel + vbDefaultButton1, "這不是記事本")
Case vbYes
'Save to Files
Case vbNo
'Exit Directly
Case vbCancel
Cancel = 1
End Select
至於快捷鍵則是 預設 就有了