2014-11-14 54 views
-1

我找不到任何工作答案,所以我最终在这里问它。 我一直在Visual Studio 2013中工作一段时间的计算器。在该计算器程序中, 我有一个Quit按钮。我希望当用户点击“退出”时它会弹出一个询问他们是否确定的弹出窗口,然后我想要“确定”关闭该程序并点击“取消”将其恢复。我有以下代码 -如何在Visual Basic中创建一个工作弹出框?

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

查看[FormClosing Event](http://msdn.microsoft.com/en-us/library/system.windows.forms.form.closing(v = vs.110).aspx) – 2014-11-14 20:46:31

+0

请参阅[MessageBox类(http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox(v = vs.110)的.aspx)。它返回一个值。 – LarsTech 2014-11-14 20:49:50

回答

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 
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的条件,这是为了防止恼人的弹出时的形式正在外部关闭,即由任务管理器关闭。当用户关闭表单时,我们只需要弹出窗口。

接下来你需要保存一个DialogResult,由MessageBox.Show返回。

由于我们在FormClosing事件处理程序中,因此没有任何操作意味着表单将被关闭。如果要取消表单关闭,则需要设置e.Cancel = TrueSee FormClosingEventArgs class on MSDN

Case Else如果您决定更改弹出窗口中的哪些按钮可用,并忘记相应地更新您的Select Case,那么您可以使用它。

相关问题