【问题标题】:How to make a working popup box in Visual Basic? [duplicate]如何在 Visual Basic 中制作一个有效的弹出框? [复制]
【发布时间】:2014-11-14 20:40:29
【问题描述】:

我找不到任何有效的答案,所以我终于在这里问了。 我已经在 Visual Studio 2013 中使用了一段时间的计算器。在那个计算器程序中, 我有一个退出按钮。我希望它是这样,当用户单击“退出”时,它会弹出一个询问他们是否确定的弹出窗口,然后我希望“确定”关闭程序并“取消”将它们带回来。我有以下代码-

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

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

【问题讨论】:

标签: vb.net


【解决方案1】:

您应该有一个 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 = TrueSee FormClosingEventArgs class on MSDN.

Case Else 如果您决定更改弹出窗口中可用的按钮,却忘记相应地更新您的 Select Case,那么会出现这种情况。

【讨论】:

    【解决方案2】:

    以下代码回答了您的问题,但请关注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
    

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 2017-03-27
      • 1970-01-01
      • 2020-07-18
      • 2012-12-26
      相关资源
      最近更新 更多