单击子窗体中的 X 按钮时如何关闭应用程序?
How to close the app when I make click on X button in a child form?
我有一个包含两个表单的表单应用程序。在第二种形式中,我在右上角有 x
按钮。当我点击这个按钮关闭应用程序时,我该如何做,而不仅仅是隐藏 Form2 window?
首先你需要捕捉事件。为此,请在子窗体的 FormClosing
事件上设置一个事件处理程序。
然后有几种选择:
"Brute force" 使用 Process.Kill()
.
终止
这将终止进程而不让任何清理代码进入 运行。它的效果类似于通过任务管理器结束进程。您可以使用 Process.GetCurrentProcess
获取当前进程。像这样使用:
Process.GetCurrentProcess().Kill();
"Gentle" 通过使用 Application.Exit()
.
关闭所有 windows 的方式终止
这将关闭所有消息泵和 windows,但同时允许正常的清理代码到 运行。但是,它不保证进程将终止,例如,如果在消息循环完成后一个被放弃的线程仍然处于活动状态。像这样使用:
Application.Exit();
向主线程传达意图。
这是一个设计解决方案,而不是您放在某处的 "line of code"。这个想法是 2 类 (两种形式中的)具有某种通信机制(通过消息,事件或您认为合适并且可能已经使用的任何方式),并且子表单通知父表单用户想要退出应用程序。然后由主窗体清理一切,关闭所有窗体(它自己和其他窗体),并正常退出进程。这是最简洁的首选方法,但需要适当的设计和更多代码。
如果您使用表单,最简单的是使用
this.Close(); or Application.Exit();
我有一个包含两个表单的表单应用程序。在第二种形式中,我在右上角有 x
按钮。当我点击这个按钮关闭应用程序时,我该如何做,而不仅仅是隐藏 Form2 window?
首先你需要捕捉事件。为此,请在子窗体的 FormClosing
事件上设置一个事件处理程序。
然后有几种选择:
"Brute force" 使用
Process.Kill()
.
终止 这将终止进程而不让任何清理代码进入 运行。它的效果类似于通过任务管理器结束进程。您可以使用Process.GetCurrentProcess
获取当前进程。像这样使用:Process.GetCurrentProcess().Kill();
"Gentle" 通过使用
Application.Exit()
.
关闭所有 windows 的方式终止 这将关闭所有消息泵和 windows,但同时允许正常的清理代码到 运行。但是,它不保证进程将终止,例如,如果在消息循环完成后一个被放弃的线程仍然处于活动状态。像这样使用:Application.Exit();
向主线程传达意图。
这是一个设计解决方案,而不是您放在某处的 "line of code"。这个想法是 2 类 (两种形式中的)具有某种通信机制(通过消息,事件或您认为合适并且可能已经使用的任何方式),并且子表单通知父表单用户想要退出应用程序。然后由主窗体清理一切,关闭所有窗体(它自己和其他窗体),并正常退出进程。这是最简洁的首选方法,但需要适当的设计和更多代码。
如果您使用表单,最简单的是使用
this.Close(); or Application.Exit();