C#如果有3个表格,我可以显示Form3并关闭Form1和Form2吗?

use*_*575 3 c# winforms

我有3个表格.我想在Form2中单击按钮时显示Form3并关闭Form1,Form2.这是我的代码.当我运行此代码时,它可以显示Form3但不关闭Form1.

Form1中

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2();
    frm2.ShowDialog();
    //frm2.Show();
}
Run Code Online (Sandbox Code Playgroud)

窗体2

private void button1_Click(object sender, EventArgs e)
{
    Form3 frm3 = new Form3();
    Form1 frm1 = new Form1();
    frm3.Show();

    frm1.Hide();  // It not close Form1
    this.Hide();
    // frm1.Close();
    // this.Close();
}
Run Code Online (Sandbox Code Playgroud)

Sud*_*udi 6

问题:您正在创建Form1的新实例,然后尝试关闭/隐藏它.

解决方案:您需要获取Form1已在内存中的实例,然后隐藏或关闭它.

替换这个:

Form1 frm1 = new Form1();
frm1.Hide();  // It not close Form1
Run Code Online (Sandbox Code Playgroud)

有了这个:

Form1 form1 = (Form1) Application.OpenForms["Form1"];
Form3 frm3 = new Form3();
frm3.Show();   
form1.Hide();
Run Code Online (Sandbox Code Playgroud)

  • 由于form1是父母,这还不会关闭整个程序吗? (2认同)