visual c#代码再次加载Form1

时间:2014-10-09 17:38:36

标签: c# winforms override overloading form-load

在我的Visual C#程序中,我有两个表单Form1& Form2

Form1有一个按键通话btnfrm1Form2有一个按键通话btnfrm2

我需要我的程序做的是: -

当我按下btnfrm1时,需要打开Form2并隐藏Form1&当我按btnfrm2时,它需要再次显示Form1并关闭Form2

我为btnfrm1点击事件编码的是

Form2 frm2= new Form2();
frm2.Show();
this.Hide();

但我不知道在Form2's btnfrm2点击事件中要写什么来使Form2消失而Form1重新出现。

有人能帮助我吗? 我欣赏的任何帮助

3 个答案:

答案 0 :(得分:2)

尝试以下代码

Form1 frm1 = (Form1)Application.OpenForms["Form1"];
frm1.Show();
this.Close();

答案 1 :(得分:1)

您需要实际查看MdiParent,这将创建一个父应用程序。然后,所有子表单都将出现在父表单中。因此,在您的初始form中,您可以执行以下操作:

  • MdiContainer应设为true

它将与MenuStrip结合使用,就像传统的应用程序一样:

Child form = new Child();
form.Parent = this;
form.ShowDialog();

这样你就可以做到这一点。如果您采用自己的方法,则应使用Close而非Hide自动Close,并允许您重新打开。您可以转到这个答案,我真的进入了很多detail,只是忽略了关于树视图的第二部分。

答案 2 :(得分:1)

您的辅助表格需要了解您的主要表格。

public class Form1
{
    private Form2 _form2;

    public void ShowForm2()
    {
        if(_form2 == null)
        {
            _form2 = new Form2();
            _form2.Bind(this);
        }
        this.Hide();
        _form2.Show();
    }
}

public class Form2
{
    private Form1 _form1;

    public void Bind(Form1 form1)
    {
        _form1 = form1;
    }

    public void ShowForm1()
    {
        this.Hide();
        _form1.Show();
    }
}