我无法找到任何有效的答案,所以我终于在这里问了。 我在Visual Studio 2013中一直在使用计算器。在那个计算器程序中, 我有一个退出按钮。当用户点击" Quit"我希望它是这样的。它有一个弹出窗口,询问他们是否确定,然后我想要" OK"关闭程序和"取消"把他们带回来。我有以下代码 -
Private Sub Button18_Click(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
MsgBox("Are you sure you would like to Quit?", 1 + 16, "Quit")
End Sub
我不知道如何使这项工作,所以如果你能提供帮助,请回答!
答案 0 :(得分:2)
您应该有一个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 上的条件,这是为了防止在外部关闭表单时(即任务管理器)发出恼人的弹出窗口。我们只想在用户关闭表单时使用弹出窗口。
接下来,您需要保存由MessageBox.Show
返回的 DialogResult 。
由于我们在FormClosing事件处理程序中,因此没有操作意味着将关闭表单。如果您想取消表单关闭,则需要设置e.Cancel = True
。 See FormClosingEventArgs class on MSDN
Case Else 如果您决定更改弹出窗口中可用的按钮,并且忘记更新Select Case
,那么
答案 1 :(得分:0)
以下代码可以回答您的问题,但请按Neolisk's answer制作更强大的应用。
Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
Dim result As MsgBoxResult
result = MsgBox("Are you sure you would like to Quit?", 1 + 16, "Quit")
If (result = MsgBoxResult.Ok) Then
Application.Exit()
End If
End Sub