2014-10-22 75 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