2014-10-09 54 views
3

在我的Visual C#程序中,我有2个窗体调用Form1 & Form2visual c#代码再次加载Form1

Form1有一个按钮调用btnfrm1Form2有一个按钮调用btnfrm2

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

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

我已经编写了btnfrm1 click事件是这样的

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

但我不知道在 click事件写尽Form2的消失和重新出现Form1上。

有人可以帮助我吗? 任何帮助,我很感激

回答

2

尝试下面的代码

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

非常感谢你@Masoud你的代码为我工作。代码非常简单。谢谢你再次帮助我,我感谢你的帮助。 – 2014-10-10 02:46:26

+0

@HasithSithila,我很高兴我的代码帮助你:) – Masoud 2014-10-10 07:01:35

1

你要真正考虑MdiParent,这将创建一个父应用程序。所有的孩子形式将出现在父母身上。因此,在您最初的form你做到以下几点:

  • MdiContainer应设置为true

将再加上MenuStrip,工作像传统的应用程序:

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

这样,你可以做到这一点。如果你采用这种方法,那么你应该使用Close而不是Hide这种方式,它会自动运行Close并允许你重新打开。你可以去这个答案,我真的进入了很多detail,只是忽略关于树视图第二部分。

+0

谢谢格雷格你的代码甚至可以工作,但它与我所期望的有所不同。但是,谢谢你的帮助,我也很感谢你的帮助。 – 2014-10-10 04:07:42

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

亲爱的Silas Reinagel我试过你的代码,但是在Form2.cs中它强调了“绑定”一词,并显示“方法必须有返回类型”的错误。我不知道该返回什么。但我想你可能有一些想法。 – 2014-10-10 03:17:28

+0

谢谢Silas Reinagel,现在你的代码甚至可以工作。谢谢你的帮助,我感谢你的帮助。 – 2014-10-10 03:49:21