怎么在关闭主窗体的同时关闭所以子窗体

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

20 个解决方案

#1


Application.Exit();

#2


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

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

#3


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

#4


Application.Exit()

#5


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

#6


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

#7


引用 2 楼 homejiji 的回复:
1.Application.Exit(); 
this.close(); 

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

mark

#8


捕获关闭事件, 然后遍历关闭子窗体.

尽量不要Application.Exit(), 有资源清理的一些问题.

#9


Application.Exit() 

#10


Application.Exit() 

似乎这个就可以搞定一切

#11


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

#12


附:几种程序退出方法比较

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

#13


System.Environment.Exit(0);  

#14


引用 12 楼 lyx717 的回复:
附:几种程序退出方法比较 

·this.Close();  只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 
·Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 
·Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题; 
·System.Environment.Exit(0);  这是最彻底的退出…


很不错,学习了.

#15


不错,学习了。。。

#16


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


都是关闭事件。。。。

 Closed 关闭窗体后发生。 
 Closing 在关闭窗体时发生。 

closeing一般是你在点击关闭按钮时候发生的,在做mdi的子窗体点关闭按钮的时候经常在closeing事件中加上处理,使得子窗体只是隐藏而不是关闭。。。

#17


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


都是关闭事件。。。。

 Closed 关闭窗体后发生。 
 Closing 在关闭窗体时发生。 

closeing一般是你在点击关闭按钮时候发生的,在做mdi的子窗体点关闭按钮的时候经常在closeing事件中加上处理,使得子窗体只是隐藏而不是关闭。。。

#18


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;
                }
            }           
        }

#19


只要主窗体的所有对象都释放了。程序就结束了。所有子窗体也就关了。建议全局就用一个主窗体的对象。(条件允许的情况)

#20


m
引用 12 楼  的回复:
附:几种程序退出方法比较

·this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 
·Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 
·Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临……

#1


Application.Exit();

#2


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

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

#3


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

#4


Application.Exit()

#5


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

#6


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

#7


引用 2 楼 homejiji 的回复:
1.Application.Exit(); 
this.close(); 

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

mark

#8


捕获关闭事件, 然后遍历关闭子窗体.

尽量不要Application.Exit(), 有资源清理的一些问题.

#9


Application.Exit() 

#10


Application.Exit() 

似乎这个就可以搞定一切

#11


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

#12


附:几种程序退出方法比较

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

#13


System.Environment.Exit(0);  

#14


引用 12 楼 lyx717 的回复:
附:几种程序退出方法比较 

·this.Close();  只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 
·Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 
·Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临其它线程无法正确退出的问题; 
·System.Environment.Exit(0);  这是最彻底的退出…


很不错,学习了.

#15


不错,学习了。。。

#16


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


都是关闭事件。。。。

 Closed 关闭窗体后发生。 
 Closing 在关闭窗体时发生。 

closeing一般是你在点击关闭按钮时候发生的,在做mdi的子窗体点关闭按钮的时候经常在closeing事件中加上处理,使得子窗体只是隐藏而不是关闭。。。

#17


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


都是关闭事件。。。。

 Closed 关闭窗体后发生。 
 Closing 在关闭窗体时发生。 

closeing一般是你在点击关闭按钮时候发生的,在做mdi的子窗体点关闭按钮的时候经常在closeing事件中加上处理,使得子窗体只是隐藏而不是关闭。。。

#18


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;
                }
            }           
        }

#19


只要主窗体的所有对象都释放了。程序就结束了。所有子窗体也就关了。建议全局就用一个主窗体的对象。(条件允许的情况)

#20


m
引用 12 楼  的回复:
附:几种程序退出方法比较

·this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出; 
·Application.Exit();  强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出; 
·Application.ExitThread(); 强制中止调用线程上的所有消息,同样面临……

#21