我在项目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();
但我无法访问父表单的任何方法和属性。
我收到错误:
答案 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
之后一切都应该正确编译。