找出父表格

时间:2013-05-18 09:32:27

标签: c# winforms

我有三种形式,Form1,Form2,Form3。 Form1中的按钮可以打开Form3,Form2中的按钮也可以打开Form3。 按下任一按钮时,将隐藏相应的表单并打开Form3。 当Form3关闭时,它应该打开已隐藏的表单。

我将如何做到这一点?

2 个答案:

答案 0 :(得分:3)

Form.Show方法可以将OwnerForm作为参数,因此请将其称为:

var frm = new Form3();
frm.Show(this);

您可以通过属性Owner访问Form3中的父级,因此在结束事件中:

private void FormIsClosing(object sender, FormClosingEventArgs e)
{
   var owner = this.Owner;

   if (owner != null)
   {
       owner.Show();
   }
}

答案 1 :(得分:0)

另一种方法是使用Acivated和FormClosed事件。

让我们在Form1中说明Click一个按钮来显示Form2

private void button1_Click(object sender, EventArgs e)
 {
  Form2 frm2 = new Form2();
  frm2.Activated += new EventHandler(frm2_Activated);
  frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed);
  frm2.Show();
 }

现在,这个是当Form2显示或被激活时你隐藏了调用表单,在本例中是Form1

    private void frm2_Activated(object sender, EventArgs e)
    {
        this.Hide(); // Hides Form1 but it is till in Memory
    }

在这种情况下,当被调用的表单处于关闭时,这一个Form2将再次显示隐藏的Form1。

   private void frm2_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Show(); // Show hidden Form1
    }