如何关闭当前表格并返回主表格

时间:2014-10-22 03:06:28

标签: c# winforms

我有几种形式。

我们称他们为mainFormformAformB

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。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我认为您可以简单地将MainForm对象传递给FormA,然后将FormA传递给FormB,然后单击按钮,您应该简单地显示您的FormA对象。

根据您的代码,您在此处显示新的MainForm对象,这是您在 buttonGoBack_Click 事件中创建新对象时第一次创建的。

您需要在FormA中进行更改

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

答案 1 :(得分:0)

Main 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