[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)则不关闭程序

4. 附注

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

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

没有指定时,在电脑关机时,想要强制关闭此程序,而关闭程序时,会执行 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]关闭程序时显示对话框,用以再次确认是否关闭

原文地址:https://www.cnblogs.com/petewell/p/11516590.html

时间: 2024-08-05 19:32:37

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

弹出一个非阻塞对话框(在程序关闭后 仍然显示对话框)

今天有个小需求, 程序要求执行一个检测操作, 如果检测失败的话则弹出信息并且关闭程序 由于检测代码是封装到一个独立进程里的, 所以直接使用TerminateProcess(GetCurrentProcess, 0);来关闭当前进程 可是在测试时却发现, 原本使用MessageBox来弹出消息却会阻塞结束进程的操作 一般我们在系统里弹出对话框都是调用Windows.MessageBox, 这个方法在一般情况下, 可以不阻塞本程序的操作(虽然在代码层面仍然是阻塞的) 大家可以用一个小例子试试 pro

【Exception—WebForm】当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作。请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知。

最近做的项目现在发布到服务器上开始测试了,本地好好的程序,到服务器上却报异常了: 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定 ServiceNotification 或 DefaultDesktopOnly 样式,以显示服务应用程序发出的通知. 堆栈信息: [InvalidOperationException: 当应用程序不是以 UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定 ServiceNotifica

当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体

最近在做一个WCF程序的时候,WCF程序老是弹出一个错误“当应用程序不是以UserInteractive 模式运行时显示模式对话框或窗体是无效操作.请指定ServiceNotification或DefaultDesktopOnly样式,以显示服务应用程序发出的通知”这个错误的警告,后来通过try catch语句来捕获到了这个错误,并找到了一些提示信息. 很可能由 IncludeExceptionDetailInFaults=true 创建的 ExceptionDetail,其值为:System.

android实现应用程序只有在第一次启动时显示引导界面

概述 SharedPreferences的使用非常简单,能够轻松的存放数据和读取数据.SharedPreferences只能保存简单类型的数据,例如,String.int等.一般会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中,再用SharedPreferences保存. 使用SharedPreferences保存key-value对的步骤如下: (1)使用Activity类的getSharedPreferences方法获得SharedPrefere

winform程序关闭界面时弹出提示框

void Form1_FormClosing(object sender, FormClosingEventArgs e){ if (MessageBox.Show( "窗口关闭后,数据即将丢失!是否现在关闭窗口", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { e.Cancel = true; return; }}

在读程序时遇到的一些问题

static在C/C++中的作用?有初始化值的作用吗?1.先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.如果加了static,就会对其它源文件隐藏.2.static的第二个作用是保持变量内容的持久. 存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化.共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用

dialog - 从 shell 显示对话框

总览 (SYNOPSIS) dialog --clear dialog --create-rc file dialog --print-maxsize dialog common-options box-options 描述 (DESCRIPTION) Dialog 是一个 让 shell script 显示 对话框, 供你 陈列 各种问题 或 显示信息 的 程序. 已经 实现了 以下 对话框类型 (尽管 不是 所有的 都 必须 编译进 dialog): calendar, checklist,

在程序中点击home键后将程序通知显示到状态栏中

当程序处于后台运作的时候,Activity处于onStop状态,so只要在onStop方法中将程序运行状态显示在状态栏即可 //在状态栏显示程序通知    private void showNotification() {        // 创建一个NotificationManager的引用        NotificationManager notificationManager = (NotificationManager) this                .getSystem

打开VS2012项目“关闭程序”

在Win7-32系统上装完VS2012并使用一段时间后,当打开VS2012项目时出现如下对话框: 通过查资料得知这是由于VS2012的漏洞导致的,下载并安装完Microsoft Visual Studio 2012 更新 (KB2781514)文件patch_KB2781514.exe之后,问题得到解决.文件下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=36020 打开VS2012项目"关闭程序",布布扣,bu