如何使用表单作为消息框的替代方法来防止在VB.NET中关闭表单?

时间:2013-12-07 16:16:20

标签: vb.net winforms forms formclosing

我想问一下如何让新表单作为消息框对话框的替代方法,以防止在VB.NET中关闭表单?

好吧,我创建了一个新表单,当单击[X]按钮时,它会弹出并确认用户是否真的要退出该程序。

单击[X]按钮时弹出的表单我设计类似于消息对话框是/否,我使用两个图片框作为我的表单的是和否。

我在弹出的表单中的“是”和“否”图片框中使用了此代码:

Private Sub picxyes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxyes.Click

        Main.Close()
        about.Close()
        Me.Close()

    End Sub

Private Sub picxno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxno.Click
        Me.Close()

这是关闭事件:

e.Cancel = true
exitgame.Show()

'exitgame is the name of the form that will popup when [x] is click.

我还尝试在Private Sub picxyes_Click下添加一个e.Cancel = False,但它说错误。

我需要知道如何使用这个图片框(picxyes和picxno),当点击picxyes时,e.Cancel必须变成false,整个表单必须关闭,否则,当picxno点击时,只有exitgame表单会关闭?请分享任何可能有助于此的想法。谢谢。

1 个答案:

答案 0 :(得分:1)

MessageBox.Show()显示对话框。您还想创建一个对话框:

Private Sub picxyes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxyes.Click
    Me.DialogResult = DialogResult.OK
End Sub

Private Sub picxno_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picxno.Click
    Me.DialogResult = DialogResult.Cancel
End Sub

现在,您可以在FormClosing事件处理程序中使用DialogResult,就像对MessageBox一样:

    If e.CloseReason = CloseReason.UserClosing Then
        Using dlg = New ExitGame
            If dlg.ShowDialog() = DialogResult.OK Then e.Cancel = True
        End Using
    End If