怎么在关闭主窗体的同时关闭所以子窗体啊,也就是结束程序运行,请指点啊,谢谢了(有些窗体是隐藏的)

解决方案 »

  1.   

    1.Application.Exit();
    this.close();2.Application.ExitThread();
    this.close();
    3.
    Environment.Exit(1);
      

  2.   

    Application.Exit(); 
    this.close();
      

  3.   

    Environment.Exit(1);
    这个最强...
      

  4.   

    谢谢各位的回复啊,那关闭主窗体的事件是closing还是closed啊?
      

  5.   

    捕获关闭事件, 然后遍历关闭子窗体.尽量不要Application.Exit(), 有资源清理的一些问题.
      

  6.   

    Application.Exit() 似乎这个就可以搞定一切
      

  7.   

    重写主窗体的关闭时间,然后 加上 Application.Exit();
      

  8.   

    附:几种程序退出方法比较·this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 
    ·Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 
    ·Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题; 
    ·System.Environment.Exit(0);   这是最彻底的退出方式,不管什么线程都被强制退出,把程序结束的很干净。
      

  9.   

    System.Environment.Exit(0);  
      

  10.   

    谢谢各位的回复啊,那关闭主窗体的事件是closing还是closed啊?
    都是关闭事件。 Closed 关闭窗体后发生。 
     Closing 在关闭窗体时发生。 closeing一般是你在点击关闭按钮时候发生的,在做mdi的子窗体点关闭按钮的时候经常在closeing事件中加上处理,使得子窗体只是隐藏而不是关闭
      

  11.   

    谢谢各位的回复啊,那关闭主窗体的事件是closing还是closed啊?
    都是关闭事件。 Closed 关闭窗体后发生。 
     Closing 在关闭窗体时发生。 closeing一般是你在点击关闭按钮时候发生的,在做mdi的子窗体点关闭按钮的时候经常在closeing事件中加上处理,使得子窗体只是隐藏而不是关闭
      

  12.   

    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
            {        
                if(!e.CloseReason.Equals(CloseReason.ApplicationExitCall))   //要加这个判断,否则会执行两次弹出窗体!
                {
                    if (MessageBox.Show("是否确定退出1-Pigeon销售系统?", "确认对话框", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
                    {
                        e.Cancel = false;
                        Application.Exit();
                    }
                    else
                    {
                        e.Cancel = true;
                    }
                }           
            }