winform退出或关闭窗体时弹窗提示代码:转

winform退出或关闭窗体时弹窗提示代码,当我们点击窗体的 X 按钮时,会弹出一个对话框,询问我们是直接退出,还是最小化到托盘,还是取消这个行为.或是是否保存当前修改等等.以下以最小化到托盘为例.
       首先, 要确定已经将控件NotifyIcon拖到应用窗体中,属性name为notifyicon1.

然后, 双击窗体的FormClosing的事件 ,具码内容如下:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
           
DialogResult result = MessageBox.Show("是否退出?选否,最小化到托盘", "操作提示",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
            {
                this.Dispose();
            }
            else
            {
                e.Cancel = true;
                this.WindowState = FormWindowState.Minimized;
                this.Visible = false;
                this.notifyIcon1.Visible = true;
            }
        }OK,大功告成!

时间: 2024-10-05 14:32:54

winform退出或关闭窗体时弹窗提示代码:转的相关文章

c# winform 关闭窗体时同时结束线程实现思路(转)

前不久,做一个winform小程序,是给客户导数据用的.当时就发现调试的时候,线程有点问题,到某个点时就走不动了.但是运行确实没有问题的. 只是在关闭窗体后,资源管理器里,一大堆进程. 当时,客户急着用,小测了下,导出数据无误,进程就先不管了. 后来自己去查资料,发现只要在线程那里设置个属性 复制代码 代码如下: Thread th = new Thread(Excute); th.IsBackground = true;这样就解决问题了. 这个属性的意思就是把线程设置为后台线程. 然后关闭进程

在winform中,关闭窗口时刷新父窗口(原来打开此窗口的窗口)

如何在关闭窗口时刷新父窗口(原来打开此窗口的窗口,不一定是mdi窗口), 这种事情在b/s里很简单,但在winform里却不那么好办.因为你不能关闭第一个窗口时再打开另一个窗口,如果这样的话新窗口就一起被关闭了.但是正因为这样,我们可以让刷新的动作在关闭子窗口时进行,当然所有的动作是在父窗口中进行的.晕,不知道说明白了没有.还是看一下例子吧public partial class Customer : Form    {        public Customer()        {    

C#屏蔽Alt+F4,解决Alt+F4关闭窗体时对话框NO后,线程不退出问题

//1.将窗体的属性KeyPrieview设置为true //keypreview属性为true的时候,就可以响应键盘事件v //2.在窗体KeyDown事件中加如下代码 private void Form1_KeyDown(object sender, KeyEventArgs e) { if( (e.KeyCode == Keys.F4)&&(e.Alt==true)) //屏蔽ALT+F4 { e.Handled = true; } } //e.Handled属性:获取或设置一个值,

WinForm实现最小化窗体时隐藏到系统托盘中

1.首先在工具栏中选择NotifyIcon控件拖入窗体中: 2.设置NotifyIcon控件的相关属性: Icon:在系统托盘中显示的图标: Text:当鼠标移动到系统托盘图标上时显示的文本: ContextMenuStrip:设置系统托盘的右键菜单,这个实现很简单,拖入一个右键菜单的控件,并在下拉列表框中选择就可以了. 3.添加相关代码 /// <summary> /// 窗体SizeChanged事件 /// </summary> /// <param name=&quo

关闭窗体后,进程仍然在运行的问题重现与解决

1 问题陈述 在开发中,遇到这样一个问题: 点击程序主窗体右上角的叉号关闭应用程序后,程序的进程却没有关闭. 通过查阅资料,了解到,产生此类问题的原因主要有以下两点: 1)程序中存在死循环. 2)程序为多线程程序,且在窗体关闭后,仍有线程在工作. 本文将针对此类问题,进行重现并提出解决方案. 2 场景再现 @场景1 新建Windows应用程序CloseWindowExp,程序每隔一秒钟改变一次窗体的背景色. 程序运行后的效果,如下图所示(变化的过程,就请大家在脑子中想象一下吧). 程序的主要代码

FineUI小技巧(4)关闭窗体那些事(另附24张专业版高清大图)

前言 FineUI中的Window控件常用作选择.新增或编辑内容.而关闭Window控件却有很多技巧,了解这些技巧有助于项目的快速开发. 如何关闭Window控件 第一个问题就是如何关闭Window控件,最明显的方式就是右上角的关闭图标了.总的说来,有三种方式: ESC按键(在Window控件所在页面获取焦点的情况下,按下键盘的ESC将会关闭当前激活窗体) 窗体右上角的关闭图标 用户自定义的关闭按钮 前两种方式自不必说,那么如何自定义关闭按钮呢?有两种做法: 按钮禁用回发,在页面初始化时注册关闭

WinForm显示关闭窗体特效封装

1.代码结构截图 2.核心代码 using System; using System.Drawing; using System.Windows.Forms; namespace AnimationForm { /// <summary> /// WinForm常用的几种显示特效 /// LDH @ 2018-2-25 /// </summary> public partial class FrmMain : Form { #region Constructor public Fr

WPF加载Winform窗体时 报错:子控件不能为顶级窗体

一.wpf项目中引用WindowsFormsIntegration和System.Windows.Forms 二.Form1.Designer.cs 的 partial class Form1 设置为:public partial class Form1 三.代码如下: XXXX.Form1 Zhuwindow = new XXXX.Form1(); Zhuwindow.TopLevel = false; Zhuwindow.FormBorderStyle = System.Windows.Fo

C#使用HttpWebRequest 进行请求,提示 基础连接已经关闭: 发送时发生错误。

本人今天遇到的错误,C#使用HttpWebRequest 进行请求,提示 基础连接已经关闭: 发送时发生错误. 测试了很久,才发现,是安全协议问题,把安全协议加上就可以了 请求的地址安全协议可能也不一样, ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls