2014-10-09 55 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