【问题标题】:How to close Main window or application from ShowDialog window如何从 ShowDialog 窗口关闭主窗口或应用程序
【发布时间】:2011-09-09 02:54:48
【问题描述】:

根据问题。所以我在应用程序启动时加载了一个主窗口(MainForm)。然后在 MainForm_load 事件中显示另一个表单(LoginForm.showDialog())。

我苦苦挣扎的是,如果用户关闭 LoginForm(右上角的 x 符号),它如何关闭应用程序? 在 LoginForm 中只有一个标记为“登录”的按钮

感谢之前的答案:)


我一直在尝试这个

    private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
    {

        if (e.CloseReason == CloseReason.UserClosing)
        {
            Application.Exit();

        }
        else
        {
            this.Dispose();
        }
    }

但它是 Application.Exit() 上的无效操作异常

所以我想要的是只有当我使用 [x]close 按钮​​关闭此登录表单时应用程序才会退出。

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    在 Program.cs 中执行此操作,如下所示:

        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            using (var login = new LoginForm()) {
                if (login.ShowDialog() != DialogResult.OK) return;
            }
            Application.Run(new MainForm());
        }
    

    【讨论】:

    • 我在 MainFrm_Load() m8 中调用 Login.ShowDialog(),怎么样..?
    • 删除那个,不再需要了。
    • 它不像我想要的那样工作 m8 因为我想先加载 MainForm。顺便说一句,我稍微改变一下问题。
    • 您的新代码无法运行,应用程序从未启动,因此您无法退出。我看不到首先加载主表单的意义,你的文字没有帮助。
    • 我找到了解决方案,感谢您对 m8 的关注,我真的很感激 :) 抱歉,这有点难以解释。我会立即发布解决方案。
    【解决方案2】:

    我不应该一开始就使用 frmLogin_FormClosing 事件。

    我使用 frmLogin_FormClosed

        private void frmLogin_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (e.CloseReason == CloseReason.UserClosing)
            {
                Application.Exit();
    
            }
        }
    

    感谢大家的帮助和关注:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多