[C#][VB.NET]关闭程序时显示对话框,用以再次确认是否关闭

[C#][VB.NET]关闭表单时显示对话框,用以再次确认是否关闭


1. 问题描述

关闭程序时显示对话框,用以再次确认是否关闭

2. 方法

只要在 Form Closing 事件,显示 MessageBox,并且当使用者选择 否 时,让 e.Cancel = true 即可

C# 程序


        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("是否确定要关闭程序", "关闭程序", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }

VB.NET 程序


    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If MessageBox.Show("是否确定要关闭程序", "关闭程序", MessageBoxButtons.YesNo) = DialogResult.No Then
            e.Cancel = True
        End If
    End Sub

3. 执行结果

程序关闭时,跳出如下图的对话框,按是(Y)则关闭程序,按否(N)则不关闭程序

image

4. 附注

CloseReason 枚举类型 : 指定关闭表单的原因 (此部分感谢 蹂躏 的提醒)

关闭表单时,可以透过 CloseReason 指定关闭表单的原因

image

没有指定时,在电脑关机时,想要强制关闭此程序,而关闭程序时,会执行 Form Closing 事件,此时弹出对话框,导致电脑关机中断。

以下程序将 CloseReason 的部分补上 :

C# 程序


        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason != CloseReason.WindowsShutDown)
            {
                if (MessageBox.Show("是否确定要关闭程序", "关闭程序", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    e.Cancel = true;
                }
            }
        }

VB.NET 程序


    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If (e.CloseReason <> CloseReason.WindowsShutDown) Then
            If MessageBox.Show("是否确定要关闭程序", "关闭程序", MessageBoxButtons.YesNo) = DialogResult.No Then
                e.Cancel = True
            End If
        End If
    End Sub

5. 参考

程序执行时,使用者执行关机动作,无法正常关机问题

程序关闭 继续执行

表单右上角之关闭功能

原文:大专栏  [C#][VB.NET]关闭程序时显示对话框,用以再次确认是否关闭


猜你喜欢

转载自www.cnblogs.com/petewell/p/11516590.html