【问题标题】:How to get MessageBoxButtons.RetryCancel to do restart or exit program?如何让 MessageBoxButtons.RetryCancel 重新启动或退出程序?
【发布时间】:2014-04-08 20:53:30
【问题描述】:

如何使 MessageBoxButtons.RetryCancel 重新启动程序(用于重试)或退出程序(用于取消)?这是我的代码:

Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
    ' displays a student's grade

    Double.TryParse(txtEarned.Text, dblEarned)

    For Each minimum As Double In dblMinimumPoints
        If dblEarned >= minimum Then
            lblGrade.Text = strGrade(gradeIndex)
            gradeIndex += 1
        End If
    Next

    txtEarned.ReadOnly = False
    btnDisplay.Enabled = False

    MessageBox.Show("Do you want to try again?", "Grade Calculator",
                    MessageBoxButtons.RetryCancel, MessageBoxIcon.Question)
End Sub

【问题讨论】:

  • 我想这是一个 WinForms 应用程序,对吧?
  • 是的,它是一个 winforms 应用程序

标签: vb.net


【解决方案1】:

我想这是一个 WinForms 应用程序。
因此,如果是这种情况,Application class 包含所需的方法

Dim result As DialogResult = MessageBox.Show("Do you want to try again?", _
                             "Grade Calculator", _
                             MessageBoxButtons.RetryCancel, MessageBoxIcon.Question)
if result = DialogResult.Retry Then
    Application.Restart()
else
    Application.Exit()
End If

只是一点警告,这两种方法都有点危险,许多人建议不要使用它们。通过对这些方法进行一些研究,您会发现很多关于调用这两个方法的副作用的警告。

Why is Application.Restart() not reliable?
Application.Exit() vs Application.ExitThread() vs Environment.Exit()

等等……

【讨论】:

  • 你有一个错字。这是 Application.Exit 不存在。它不会让我进行一个字符的编辑。很好的答案。
【解决方案2】:

MessageBox 返回一个 DialogResult 对象。您只需要输入一个 if 语句即可进行分支。 end 语句退出程序。无需重新启动,只需清除您的数据输入字段即可。

 Dim adlg As DialogResult = MessageBox.Show("blah", "blao", MessageBoxButtons.RetryCancel)
        If adlg = Windows.Forms.DialogResult.Retry Then
            resetProgram()
        Else
            'cancel
            End

        End If

【讨论】:

    【解决方案3】:
    Do
    
    'your code here
    
    Dialogresult res = MessageBox.Show("Do you want to try again?", "Grade Calculator",
                        MessageBoxButtons.RetryCancel, MessageBoxIcon.Question)
    
    Loop While ( (res == DialogResult.Retry) Or (res == DialogResult.Cancel) )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-20
      • 2015-01-26
      • 1970-01-01
      相关资源
      最近更新 更多