我如何prevent从当我关闭启动窗体终止应用程序? [英] How do I prevent the app from terminating when I close the startup form?

查看:113
本文介绍了我如何prevent从当我关闭启动窗体终止应用程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有在我的项目有两种形式:Form 1和Form。
有一个在Form1上的一个按钮,我想要做的就是关闭Form1并显示窗体2时,该按钮点击。什么

There is two Forms in my project : Form1 and Form2. There is a button in Form1, and what I want to do is closing Form1 and showing Form2 when that button clicked.

首先,我试过

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

但为Form1被关闭,窗体2也得到了休息。
接下来,我试过

but as Form1 was closed, Form2 also got closed. Next, I tried

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

但有一个缺点,即当窗体2是closed.So应用程序不会退出,我不得不把在以&nbsp其他来源的;窗体2的form_FormClosing栏目

but there is a disadvantage that the application does not exit when the Form2 is closed.So, I had to put in additional sources in form_FormClosing section of Form2.

嗯....我不知道这是否是正确的方式....那么,什么是处理这个问题的正确方法?

Hmm.... I wonder whether this is the right way....So, what is the proper way of handling this problem?

推荐答案

在Program.cs中自动生成的code写入时关闭启动窗口来终止应用程序。你需要调整它,所以它只有在没有留下更多的窗口终止。像这样的:

The auto-generated code in Program.cs was written to terminate the application when the startup window is closed. You'll need to tweak it so it only terminates when there are no more windows left. Like this:

    [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;
    }

这篇关于我如何prevent从当我关闭启动窗体终止应用程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆