你应该有一个的FormClosing处理,考虑到不同的方式表单可以关闭:
Private Sub Form1_FormClosing(sender As Object,
e As FormClosingEventArgs) Handles Me.FormClosing
If e.CloseReason <> CloseReason.UserClosing Then Return
Dim res As DialogResult = MessageBox.Show(
"Are you sure?", "Confirmation", MessageBoxButtons.OKCancel)
Select Case res
Case DialogResult.OK
'do nothing, we are already closing
Case DialogResult.Cancel
e.Cancel = True
Case Else
'should never get here
Throw New NotImplementedException
End Select
End Sub
通知上CloseReason的条件,这是为了防止恼人的弹出时的形式正在外部关闭,即由任务管理器关闭。当用户关闭表单时,我们只需要弹出窗口。
接下来你需要保存一个DialogResult,由MessageBox.Show
返回。
由于我们在FormClosing事件处理程序中,因此没有任何操作意味着表单将被关闭。如果要取消表单关闭,则需要设置e.Cancel = True
。 See FormClosingEventArgs class on MSDN。
Case Else如果您决定更改弹出窗口中的哪些按钮可用,并忘记相应地更新您的Select Case
,那么您可以使用它。
查看[FormClosing Event](http://msdn.microsoft.com/en-us/library/system.windows.forms.form.closing(v = vs.110).aspx) – 2014-11-14 20:46:31
请参阅[MessageBox类(http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox(v = vs.110)的.aspx)。它返回一个值。 – LarsTech 2014-11-14 20:49:50