单击子窗体中的 X 按钮时如何关闭应用程序?

How to close the app when I make click on X button in a child form?

我有一个包含两个表单的表单应用程序。在第二种形式中,我在右上角有 x 按钮。当我点击这个按钮关闭应用程序时,我该如何做,而不仅仅是隐藏 Form2 window?

首先你需要捕捉事件。为此,请在子窗体的 FormClosing 事件上设置一个事件处理程序。

然后有几种选择:

  1. "Brute force" 使用 Process.Kill().
    终止 这将终止进程而不让任何清理代码进入 运行。它的效果类似于通过任务管理器结束进程。您可以使用 Process.GetCurrentProcess 获取当前进程。像这样使用:

    Process.GetCurrentProcess().Kill();
    
  2. "Gentle" 通过使用 Application.Exit().
    关闭所有 windows 的方式终止 这将关闭所有消息泵和 windows,但同时允许正常的清理代码到 运行。但是,它不保证进程将终止,例如,如果在消息循环完成后一个被放弃的线程仍然处于活动状态。像这样使用:

    Application.Exit();
    
  3. 向主线程传达意图。
    这是一个设计解决方案,而不是您放在某处的 "line of code"。这个想法是 2 类 (两种形式中的)具有某种通信机制(通过消息,事件或您认为合适并且可能已经使用的任何方式),并且子表单通知父表单用户想要退出应用程序。然后由主窗体清理一切,关闭所有窗体(它自己和其他窗体),并正常退出进程。这是最简洁的首选方法,但需要适当的设计和更多代码。

如果您使用表单,最简单的是使用

this.Close(); or  Application.Exit();