我想在form2中调用函数update
,即使是form2中的按钮也是如此。 update方法将更改form1中的控件。我正在使用这种方法,但是当我访问它时不提供访问权限(当方法是非静态的)时,当我使方法静态时,它要求使控件保持静态,这是我不想要的。还有其他办法吗?
public button1_click()
{
Form1.update();
}
// method in form1
public static void update()
{
control.Text="ab";
}
答案 0 :(得分:4)
您无法在静态方法中访问非静态变量。请参阅documentation:
虽然类的实例包含该类的所有实例字段的单独副本,但每个静态字段只有一个副本。
无法使用它来引用静态方法或属性访问器。
在这种情况下,如果您的update
方法(BTW应为Update
)需要访问您班级的非静态成员,则应将其设为非静态成员,并更改{{1如下:
1)添加一个字段并更改表单的构造函数以接受Form2
实例作为参数:
Form1
2)从private Form1 form1;
public Form2(Form1 form1)
{
this.form1 = form1;
}
创建form2
时,传递其实例:
form1
如果您在其他某个环境中创建Form2 form2 = new Form2(this); // when in Form1
,则需要(类似地)拥有Form2
个实例并致电:
form1
3)更改事件处理程序以处理Form2 form2 = new Form2(form1);
的特定实例:
Form1