如何关闭MainForm,而不关闭其他?

时间:2014-04-12 15:37:18

标签: c# forms

所以,我正在写一个刽子手,而在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()退出程序,它仍会在后台运行。

那么,我怎么能解决这个问题呢?

3 个答案:

答案 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();
    }
}