打开下一个表单后,我的程序将关闭

Posted

技术标签:

【中文标题】打开下一个表单后,我的程序将关闭【英文标题】:My program would close after opening my next form 【发布时间】:2015-01-17 02:35:48 【问题描述】:

我的第二个表单打不开,如果需要,愿意提供更多详细信息

点击按钮后,它将进入下一个表单,但它只是在它之前关闭

    private void btnNext_Click(object sender, EventArgs e)
    

        frmGame_3_ v = new frmGame_3_();
        this.Close();
        v.Show();
   

这是程序关闭时显示的内容。

线程 0x21fc 已退出,代码为 259 (0x103)。线程 0x22b8 已退出代码 259 (0x103)。 'ICSCulminating.vshost.exe' (CLR v4.0.30319:ICSCulminating.vshost.exe):已加载 'C:\Users\Owner\Desktop\ICSCulminating(David)e3\ICSCulminating\bin\Debug\ICSCulminating.exe'。 已加载符号。线程 0x207c 已退出,代码为 259 (0x103)。 线程 0x23c4 已退出,代码为 259 (0x103)。该程序 '[7568] ICSCulminating.vshost.exe' 已退出,代码为 0 (0x0)。

【问题讨论】:

尝试this.Hide() 而不是this.Close()。通常,关闭主窗体会结束应用程序。 【参考方案1】:

您可以按照评论者 adv12 的建议隐藏表单而不是关闭它。这避免了关闭主窗体导致事件循环终止和程序退出的问题。

但是,这意味着您将留下未使用的表单,未处理。恕我直言,即使这本身不是一个严重的问题,最好以更清洁的方式解决问题。

也就是说,更改程序的Main() 方法,使其使用Application.Run() 方法的无参数重载。这消除了对初始表单的依赖,因此您可以在不退出整个程序的情况下关闭它。然后,当您想关闭程序时,您可以调用Application.ExitThread() 方法(如果您愿意,也可以调用Application.Exit())。

在您的 Main() 方法中(在项目的 Program.cs 文件中找到),更改方法的最后一行,如下所示:

Application.Run(new Form1());

……到这个:

new Form1().Show();
Application.Run();

注意:您的主要Form 子类的名称可能不是Form1。显然,如果不是Form1,现在就使用你自己代码中的任何类名。

【讨论】:

以上是关于打开下一个表单后,我的程序将关闭的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter:在程序开始时调用一次函数?

如果表单空白,Android 应用程序将关闭 - 需要验证表单

从图库中选择图像后如何打开下一个视图控制器(swift)

Android Studio:使按钮打开下一个活动

如何将我在表单上填写的信息从一个活动保存到另一个活动并在我的 Android 程序中显示多次尝试? [关闭]

如何使用data-url打开下一个模态?