如何在Visual Basic中创建一个工作弹出框?

时间:2014-11-14 20:40:30

标签: vb.net

我无法找到任何有效的答案,所以我终于在这里问了。 我在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

我不知道如何使这项工作,所以如果你能提供帮助,请回答!

2 个答案:

答案 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 = TrueSee 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