C# 退出对话框 DialogResult 用法 可防止弹出二次的尴尬
来源:互联网 发布:python科学计算下载 编辑:程序博客网 时间:2024/05/16 04:33
昨天晚上在做项目的时候,遇到了点击程序的 退出 菜单时,会弹出二次确认是否退出程序的对话框,后来分析了一下,是因为我在 Closeed 中的代码里也有一段弹出对话框询问是否退出程序的代码,后来经在网上查询,并改善,得来以下代码,可有效防止弹出二次对话框的尴尬!
我在写 Closing的退出事件中原本是这样写的,如下代码:
- /// <summary>
- /// 点击关闭时询问
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void indexForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- DialogResult dr = MessageBox.Show("是否要退出?", "关闭提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
- if (dr == DialogResult.OK)
- {
- Application.Exit();
- }
- else if(dr==DialogResult.Cancel)
- {
- e.Cancel = true;
- }
- }
上面的代码表面看上去没错,流程是正确的。但是经百度后,才明白。Application.Exit()是多余的,在程序执行到 FormClosing这个事件时自动会Exit也就是退出程序的,上面的代码会在第一次Close时调用Show,然后在Exit时又会Show一次,这样就出现了一开始说的情况,当点关闭时弹出二次询问的对话框,所以把 Application.Exit()去掉就可以了。
以下代码可有效的避免二次询问的现象。
- /// <summary>
- /// 点击关闭后,停止程序
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void indexForm_FormClosed(object sender, FormClosedEventArgs e)
- {
- Application.Exit();
- }
- /// <summary>
- /// 点击关闭时询问
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void indexForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (MessageBox.Show("是否退出系统", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
- {
- e.Cancel = true;
- }
- }
- /// <summary>
- /// 退出系统
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
- {
- if (MessageBox.Show("是否退出系统", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
- {
- Application.ExitThread();
- }
- else
- {
- return;
- }
- }
- C# 退出对话框 DialogResult 用法 可防止弹出二次的尴尬
- [C# winform] 获取自定义弹出框的DialogResult值以及用户输入
- C#弹出选择对话框(退出时判断有用)
- c#注册机及DialogResult的设置
- 双击,弹出对话框退出App
- android退出应用:弹出对话框退出应用
- menu菜单栏的应用, 弹出对话框或退出当前activity
- 三种弹出对话框的用法实例
- 三种弹出对话框的用法实例
- JSP中三种弹出对话框的用法实例
- JSP中三种弹出对话框的用法实例
- JSP中三种弹出对话框的用法实例
- 关于c#中的dialogresult
- C#弹出选择对话框的程序
- C#弹出选择对话框的程序
- C#弹出选择对话框的程序
- c# 弹出带返回值的对话框
- AlertDialog创建6种对话框的用法 (对话框,单选对话框,多选对话框,列表对话框,自定义对话框,退出对话框)
- 用WPF+MongoDB开发房产信息收集器(1)
- 关于上拉和下拉电阻
- poj 2398 Toy Storage(判断点在多边形内,叉积)
- 用WPF+MongoDB开发房产信息收集器(2)——后台线程
- struts2 action中获取jsp页面的参数的方法
- C# 退出对话框 DialogResult 用法 可防止弹出二次的尴尬
- 第4章 ISE开发环境使用指南[FPGA开发实用教程]——4.3.5 功耗分析以及XPower的使用
- Excel VBA 加载图片
- C++ DLL导出函数
- 淘宝2011.9.21校园招聘会笔试题
- C# 创建windows services
- About ISTQB Certification
- Winform 获取工作目录+用图片做画笔
- 重装系统环境,问题解决