zoukankan      html  css  js  c++  java
  • 在Closing事件中,将e.Cancle设置成true,则Windows无法关机和重启系统的解决办法

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

    小Q截图-20150903175032

    我这里设计的是当用户点击窗体的叉叉,不关闭窗体,而是最小化窗体,但当系统重启的时候,发现无关关机重启了,这里的解决办法是通过判断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);
    
    		}

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

  • 相关阅读:
    uinty之碰撞体,触碰体,刚体
    背景图片的设置和定位等
    margin padding
    《大道至简》之懒人的‘懒’
    灭霸—个人冲刺2(1)
    软件工程—个人作业(7.2)
    软件工程—个人作业(7.1)
    学习进度(13)
    学习进度(12)
    人月神话阅读笔记02
  • 原文地址:https://www.cnblogs.com/caianhua/p/4780480.html
Copyright © 2011-2022 走看看