2014-10-22 79 views
1

我有幾個窗體。如何關閉當前窗體並返回主窗體

我們稱之爲mainForm,formAformB

mainForm,有一個按鈕,去formA並確實有這段代碼的按鈕:

private void buttonOpenFormA_Click(object sender, EventArgs e) 
     { 
      formA displayformA = new formA(); 
      displayformA.Show(); 

      this.Hide(); 
     } 

而且在formA,我還有一個按鈕,打開formB這樣的:

private void buttonOpenFormB_Click(object sender, EventArgs e) 
      { 
       formB displayformB = new formB(); 
       displayformB.Show(); 

       this.Hide(); 
      } 

,並返回到mainForm

private void buttonGoBack_Click(object sender, EventArgs e) 
     { 
      mainForm displayMainForm = new mainForm(); 
      displayMainForm.Show(); 

      this.Close(); 
     } 

而在formA上,這個工作非常漂亮。但是,在formB上,這段代碼拒絕顯示mainForm。我究竟做錯了什麼?

+0

您正在創建一個新的* mainForm *對象,而不是讓隱藏的對象可見。當然不是你的意思。考慮[這種方法](http://stackoverflow.com/a/2342320/17034)。 – 2014-10-22 06:30:08

+0

@HansPassant好吧。那麼我如何讓隱藏的一個可見?我該怎麼做才能看到它? – ThisBoyPerforms 2014-10-22 07:24:52

回答

0

我想你可以簡單地將你的MainForm對象傳遞給FormA,然後FormA傳遞給FormB,然後單擊按鈕,你應該簡單地顯示你的FormA對象。

根據你的代碼,你在這裏展示它是不是你已經創建了第一次你在buttonGoBack_Click事件創建新對象新的MainForm對象。

你應該需要做出改變備考

public MainForm mainForm {get;set;} 

public FormA(MainForm mainForm) 
{ 
    this.mainForm= mainForm; 

} 

你應該需要做出改變FormB

public MainForm mainForm {get;set;} 

public FormB(MainForm mainForm) 
{ 
    this.mainForm= mainForm; 

} 


     private void buttonOpenFormA_Click(object sender, EventArgs e) 
     { 
      formA displayformA = new formA(this); 
      displayformA.Show(); 

      this.Hide(); 
     } 

      private void buttonOpenFormB_Click(object sender, EventArgs e) 
      { 
       formB displayformB = new formB(this.mainForm); 
       displayformB.Show(); 

       this.Hide(); 
      } 

     private void buttonGoBack_Click(object sender, EventArgs e) 
     { 
      (this.mainform as MainForm).Show(); 
      this.Close(); 
     } 
0

主要Form.cs

private void buttonOpenFormA_Click(object sender, EventArgs e){ 

      formA displayformA = new formA(); 

      displayformA.ShowDialog(); 

      //to close the form 
      this.dialogResult=DialogResult.OK; 
} 

FormA.cs

private void buttonOpenFormB_Click(object sender, EventArgs e){ 

        formB displayformB = new formB(); 

        displayformB.ShowDialog(); 

        //to close the form 
        this.dialogResult=DialogResult.OK; 
    } 

private void buttonGoBack_Click(object sender, EventArgs e){ 

       //to close the form 

       this.DialogResult = System.Windows.Forms.DialogResult.OK; 
} 

您只需要使用ShowDialog()。無論何時想關閉,請使用this.DialogResult=DialogResult.OK