2015-10-30 56 views
0

我想在form1中調用函數update,甚至點擊form2中的按鈕。更新方法將更改form1中的控件。我正在使用這種方法,但是當我訪問它時並沒有給出訪問權限(當方法是非靜態的時候),並且當我使這個方法變爲靜態時,它要求使控件也是靜態的,這是我不想要的。有沒有其他方法?如何從form2訪問form1的非靜態方法

public button1_click() 
{ 

Form1.update(); 

} 

// method in form1 

public static void update() 
{ 

control.Text="ab"; 

} 

回答

4

您無法訪問靜態方法中的非靜態變量。請參閱documentation

雖然類的實例包含類的所有實例字段的單獨副本,但每個靜態字段只有一個副本。

不可能使用它來引用靜態方法或屬性訪問器。

在這種情況下,如果你的update方法(順便說一句應該是Update)需要訪問類的非靜態成員,你應該讓非靜態,並改變Form2如下:

1)添加一個字段和變化形式的構造以接受Form1實例作爲參數:

private Form1 form1; 

public Form2(Form1 form1) 
{ 
    this.form1 = form1; 
} 

2)當創建從form1form2通過它的實例:

Form2 form2 = new Form2(this); // when in Form1 

如果你在其他一些情況下創造Form2你需要(類比)有form1例如在手,並呼籲:

Form2 form2 = new Form2(form1); 

3)變更事件處理程序上的特定實例的工作Form1

public button1_click() 
{ 
    this.form1.update(); 
}