一尘不染

关闭启动表单时,如何防止应用终止?

c#

我的项目中有两个窗体:Form1和Form2。Form1中有一个按钮,我要做的是关闭Form1并单击该按钮时显示Form2。

首先,我尝试

Form2 frm = new Form2();
frm.Show();
this.Close();

但是随着Form1关闭,Form2也关闭了。接下来,我尝试了

Form2 frm = new Form2();
frm.Show();
this.Hide();

但是有一个缺点,就是关闭Form2时应用程序不会退出。因此,我不得不在Form2的form_FormClosing部分中放入其他源。

嗯....我想知道这是否是正确的方法....所以,解决此问题的正确方法是什么?


阅读 193

收藏
2020-05-19

共1个答案

一尘不染

关闭启动窗口时,会编写Program.cs中自动生成的代码来终止应用程序。您需要对其进行调整,以便仅在没有更多窗口可用时才终止。像这样:

    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var main = new Form1();
        main.FormClosed += new FormClosedEventHandler(FormClosed);
        main.Show();
        Application.Run();
    }

    static void FormClosed(object sender, FormClosedEventArgs e) {
        ((Form)sender).FormClosed -= FormClosed;
        if (Application.OpenForms.Count == 0) Application.ExitThread();
        else Application.OpenForms[0].FormClosed += FormClosed;
    }
2020-05-19