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

uid*_*uid 0 c# winforms multiple-forms

我有一个带有两个表单的表单应用程序.在第二种形式中,我在右下角有x按钮.当我单击此按钮关闭应用程序时,我如何制作,而不仅仅是隐藏Form2窗口?

Ami*_*mit 5

首先你需要抓住这个事件.为此,请在子窗体的FormClosing事件上设置事件处理程序.

然后有几个选项:

  1. "蛮力"终止使用Process.Kill().
    这将终止进程而不让任何清理代码运行.它具有通过任务管理器结束进程的效果.你可以使用当前的流程Process.GetCurrentProcess.使用这样:

    Process.GetCurrentProcess().Kill();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用关闭所有窗户的"温和"终止Application.Exit().
    这将关闭所有消息泵和窗口,但会在允许正常清理代码运行的同时关闭它们.但是,它不能保证进程终止,例如,如果在完成消息循环后,forgound线程仍处于活动状态.使用这样:

    Application.Exit();
    
    Run Code Online (Sandbox Code Playgroud)
  3. 将意图传达给主线程.
    这是一个设计解决方案,而不是你放在某处的"代码行".这个想法是2个类(2个表单)有一些通信机制(通过消息,事件或任何你认为合适的,可能已经使用的),并且子表单通知用户想要退出应用程序的父表单.然后由主表单清理所有表单,关闭所有表单(本身和其他表单),并正常退出该进程.这是最干净和首选的方法,但需要适当的设计和更多的代码.