当前位置: 首页 > news >正文

实例044 在关闭窗口前加入确认对话框

实例说明

用户对程序进行操作时,难免会有错误操作的情况,例如不小心关闭程序,如果尚有许多资料没有保存,那么损失将非常严重,所以最好使程序具有灵活的交互性。人机交互过程一般都是通过对话框来实现的,对话框中有提示信息,并且提供按钮让用户选择,例如【是】或【否】。这样用户就能够对所做的动作进行确认。正如前面所说的不小心关闭程序,如果在关闭程序之前提示用户将要关闭程序,并且提供用户选择是否继续下去,这样就大大减少了误操作现象。本例程序中的窗口在关闭时会显示一个对话框,该对话框中有两个按钮【是】与【否】代表是否同意关闭程序操作。实例运行结果如图1.45所示。

技术要点

窗口正要关闭但是没有关闭之前会触发FormClosing事件,该事件中的参数FormClosingEventArgs e中包含Cancel属性,如果设置该属性为True,窗口将不会被关闭。所以在该事件处理代码中可以提示用户是否关闭程序,如果用户不想关闭程序,则设置该参数为True。利用MessageBox参数的返回值可以知道用户所选择的按钮。下面详细介绍一下相关属性。

CancelEventArgs.Cancel属性用来获取或设置指示是否应取消事件的值。该属性结构如下:

public bool Cancel { get; set; }

l     属性值:如果应取消事件,则为True;否则为False

实现过程

(1)创建一个项目,将其命名为Ex01_44,默认窗体为Form1。

(2)主要程序代码。

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)

        {

            if (MessageBox.Show("将要要关闭窗体,是否继续?", "询问", MessageBoxButtons.YesNo) == DialogResult.Yes)

            {

                e.Cancel = false;

            }

            else

            {

                e.Cancel = true;

            }

        }

举一反三

根据本实例,读者可以实现以下程序。

  使窗体的关闭按钮无效。

  使窗体关闭出现在托盘中。

 

http://www.lryc.cn/news/138423.html

相关文章:

  • 子查询和事务隔离以及用户管理
  • uniapp 滚动到指定元素的位置(锚点)
  • Spring AOP 的 afterReturing 返回值是否能修改问题
  • MyBatis分页插件PageHelper的使用及特殊字符的处理
  • [语音识别] 基于Python构建简易的音频录制与语音识别应用
  • Matlab彩色图像转索引图像
  • 测试框架pytest教程(11)-pytestAPI
  • Docker自学:利用FastAPI建立一个简单的web app
  • 微调bert做学术论文分类(以科大讯飞学术论文分类挑战赛为例)
  • Springboot中sharding-jdbc的API模式并使用自定义算法
  • MySQL回表是什么?哪些情况下会回表
  • VR、AR、MR 傻傻分不清楚?区别的底层逻辑?
  • VScode运行C语言出现的调试问题 lauch:program does not exist 解决方法
  • 云原生安全:保护现代化应用的新一代安全策略
  • mysql操作
  • 前端(十四)——DOM节点操作手册:你需要了解的一切
  • PDF怎么转成PPT文件免费?一个软件解决
  • 数据结构基础:P3-树(上)----编程作业02:List Leaves
  • 山西电力市场日前价格预测【2023-08-25】
  • 手机无人直播软件,有哪些优势?
  • SpringBoot概述SpringBoot基础配置yml的使用多环境启动
  • Python Pandas 处理Excel数据 制图
  • 如何自己实现一个丝滑的流程图绘制工具(五)bpmn的xml和json互转
  • mysql--数据库的操作
  • kafka--技术文档--架构体系
  • ctfshow web入门 web103-web107
  • 前端工程化之模块化
  • 文件服务器实现方式汇总
  • ChatGPT计算机科学与技术专业的本科毕业论文,2000字。论文查重率低于30%。
  • 【Winform学习笔记(八)】通过委托实现跨窗体传值