如何关闭主窗体,而不关闭其他窗体

本文关键字:窗体 其他 何关闭 | 更新日期: 2023-09-27 17:57:58

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

那么,我该如何解决这个问题呢?

如何关闭主窗体,而不关闭其他窗体

您不能关闭父窗体并保持子窗体的活力

使用this.Hide()而不是this.Close()

然后在Form2_FormClosed事件上,您可以执行Application.Exit()或者您甚至可以再次显示MainForm。

OR:

Form2 f2 = new Form2();
this.Visible = false;
f2.ShowDialog();
this.Close();

如果你想要一个基本的表单,它几乎只允许用户玩,直到他们关闭另一个表单,然后关闭这个表单,请使用这个:

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

您可以在ApplicationRun(new MainForm())之前显示(对话框)您的表单,这样您就不需要关闭MainForm