如何访问父表单?

时间:2017-03-04 14:50:37

标签: c# winforms c#-4.0

我在项目C#中有两个Windows窗体。

public partial class Form1 : Form
{
    public void add(){
       // 
    }
}

public partial class FormAdd : Form
{
   //
}

点击按钮后的Form1我打开FormAdd

var form = new FormAdd();
            form.Show();

FormAdd之后,我尝试调用父方法add

Form1 f = new Form1();
f.add();

但我无法访问父表单的任何方法和属性。

我收到错误:

enter image description here

2 个答案:

答案 0 :(得分:0)

一种方法是在Show()调用中将Form1作为FormAdd实例的所有者传递:

public partial class Form1 : Form
{

    private void button1_Click_1(object sender, EventArgs e)
    {
        var form = new FormAdd();
        form.Show(this); // pass this instance of Form1 in as the Owner of our FormAdd instance
    }

}

现在,在FormAdd中,将Owner属性强制转换为Form1并调用add():

public partial class FormAdd : Form
{

    private void button1_Click(object sender, EventArgs e)
    {
        if (this.Owner is Form1)
        {
            Form1 f1 = (Form1)this.Owner;
            f1.add();
        }
    }

}

答案 1 :(得分:0)

根据您的图片,尝试将代码添加到一个括号上方。由于错误似乎在您的条件范围内。

这应该是这样的:

else 
   position = 0;
 //{  <-- Remove this and put it below
   if (this.Owner is Form1)
   {
      //TODO:
   }
  }  //This should be here

之后一切都应该正确编译。