zoukankan      html  css  js  c++  java
  • C#开发WinForm窗体程序时,如何在子窗体中关闭窗口时并退出程序?(转)

    在开发C#WinForm窗体程序时,有没有遇到过,在运行或者调试程序的过程中,明明关闭了子窗口,程序并没有退出来,

    我们编辑不了,要手动关闭停止调试或全部中断等操作后,程序才退出来,这样会不会觉得挺烦的?

    我就简单的分享一下我的经验:

    1、首先我们打开子窗口的属性,点击“雷电图标(下图有框着)”找到 FormClosing(或者FormClosed)事件,双击

         

    2、在GameUI_FormClosing事件里编辑代码

         

    要是想在用户关闭子窗口程序时给个提示框,可以加参考以下代码:  

      

    [csharp] view plain copy
     
    1. private void GameUI_FormClosing(object sender, FormClosingEventArgs e)  
    2.        {  
    3.            if (MessageBox.Show("关闭窗体后,程序会退出!!", "!!提示", MessageBoxButtons.YesNo) == DialogResult.Yes)  
    4.            {  
    5.                e.Cancel = false;  
    6.                System.Environment.Exit(0);  
    7.            }  
    8.            else  
    9.            {  
    10.                e.Cancel = true;  
    11.            }  
    12.        }  

     注:以上代码就在 FormClosing() 事件里面写

     

    在c#中退出WinForm程序包括有很多方法,如:

    this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;

    2.Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;

    3.Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题;

    4.System.Environment.Exit(0);  这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。

    https://www.pianshen.com/article/6264944562/

  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/xihong2014/p/14641680.html
Copyright © 2011-2022 走看看