当前位置:首页 > Windows程序 > 正文

在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法

2021-03-26 Windows程序

最近在设计一个WinForm程序的时候遇到一个bug,,就是From1窗体的关闭事件中设置了e.Cancle设置成true,导致系统无法关机重启,windows7 和windows xp都是这样。

我这里设计的是当用户点击窗体的叉叉,不关闭窗体,而是最小化窗体,但当系统重启的时候,发现无关关机重启了,这里的解决办法是通过判断CloseReason的枚举值,来搞清楚到底是用户自己关闭或是系统引起的窗体关闭。关键代码如下:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) { //当用户点击叉叉的时候,如果不是由系统关机引起的,那么就最小化窗体 if (e.CloseReason != CloseReason.WindowsShutDown) { e.Cancel = true; this.WindowState = FormWindowState.Minimized; }else { e.Cancel = false; } }

 

在菜单中,另外写代码实现窗体关闭退出。

private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { notifyIcon1.Visible = false; this.Close(); this.Dispose(); Environment.Exit(0); }

这样,既可以让自己的窗体点击叉叉的时候最小化,而又不至于阻断系统的关机重启。

在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67748.html