在
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
至于快捷键则是 预设 就有了