打开下一个表单后,我的程序将关闭
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
,现在就使用你自己代码中的任何类名。
【讨论】:
以上是关于打开下一个表单后,我的程序将关闭的主要内容,如果未能解决你的问题,请参考以下文章
如果表单空白,Android 应用程序将关闭 - 需要验证表单