【问题标题】:Exit all forms when one close一关就退出所有表格
【发布时间】:2019-05-08 06:01:02
【问题描述】:

嘿。 当我说关闭时,我说的不是方法 close(),而是当用户点击窗口的关闭按钮时。我有多个表单,根据用户是否登录或即将登录等来显示和隐藏。当用户最终关闭其中一个表单时,我希望它们全部退出。现在,当用户关闭表单时,程序仍在运行,因为后台隐藏了一个表单。

如何在关闭时退出,我记得在 Java 中这样做过,谢谢。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    调用Application.Exit() 方法。

    【讨论】:

    【解决方案2】:
    private void btnExit_Click(object sender, EventArgs e)
    {
        for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
        {
            if (Application.OpenForms[i].Name != "Menu")
                Application.OpenForms[i].Close();
        }
    }
    

    【讨论】:

    • 发布代码通常不被认为是一个完整的答案。您至少应该尝试解释您的 sn-p 代码的作用。
    • 这对其他应用程序的 dll 扩展非常有效,因为主应用程序 Application.Exit() 的延迟可能会在主应用程序关闭后短时间内打开第三方表单。
    【解决方案3】:

    调用 Environment.Exit(0);方法

     private void btnExit_Click(object sender, EventArgs e)
        {
            Environment.Exit(0);
        }
    

    【讨论】:

      【解决方案4】:

      如果您知道应用程序的其余部分可能会不正常地关闭,请仅调用 Application.Exit()。如果其他打开的表单需要在它们的 FormClosing 事件中做某事,这不会完成。使用 Application.Exit() 是一种“不良代码气味”,这意味着您的设计存在问题。

      进行所有表单订阅的集中事件处理,以便在应用程序关闭时通知它们。还有很多其他方法可以解决这个问题,谷歌知道:)

      【讨论】:

        【解决方案5】:

        我尝试解决同样的问题,这工作正常:

          private void Form2_FormClosed(object sender, FormClosedEventArgs e)
            {
                Application.Exit();
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多