所以,我正在写一个刽子手,而在MainForm你必须选择是否要玩单人游戏或多人游戏。当我选择我想要的那个时,这个MainForm应该关闭(我使用this.Close())并触发另一个Form,但整个程序关闭。
private void button2_Click(object sender, EventArgs e)
{
Form f2 = new Form1();
f2.Show();
this.Close();
}
如果在Programs.cs中我修改了这样的代码:
Form f4 = new Form4();
f4.Show();
Application.Run();
一切顺利,但如果我不能使用Application.Exit()退出程序,它仍会在后台运行。
那么,我怎么能解决这个问题呢?
答案 0 :(得分:2)
您无法关闭父表单并让孩子保持活力。
使用this.Hide()
代替this.Close()
然后在Form2_FormClosed
活动中,你可以Application.Exit()
或者你甚至可以再次展示MainForm。
或强>
Form2 f2 = new Form2();
this.Visible = false;
f2.ShowDialog();
this.Close();
答案 1 :(得分:0)
您可以在Application.Run(new MainForm())之前显示(对话框)您的表单,这样您就不需要关闭Mainform
答案 2 :(得分:0)
如果你想要一个几乎只允许用户玩的基本表单,直到他们关闭另一个表单然后关闭这个表单,请使用:
private void button2_Click(object sender, EventArgs e)
{
Form f2 = new Form1();
this.Hide();
f2.ShowDialog();
this.Close();
}
如果用户选择了不想玩另一个游戏或更改难度设置等等,那么更有趣的东西会让你关闭表格。你可以这样做:
private void button2_Click(object sender, EventArgs e)
{
Form f2 = new Form1();
this.Hide();
if(f2.ShowDialog() == DialogResult.OK)
{
this.Show();
}
else
{
this.Close();
}
}