2011-05-01 66 views
1

我有2個窗口窗體,父母和孩子。父母是主要形式。孩子是一個對話框,用戶可以編輯他們的詳細信息。將方法添加到Windows窗體?

當在父窗體上單擊一個按鈕時,它將加載子窗體。像這樣:

private void add_account_Click(object sender, EventArgs e) 
{ 
    this.account_add_edit = new Form2(); 
    account_add_edit.test(); 
    account_add_edit.ShowDialog(); 
} 

正如您所看到的,我創建了一個新窗體,嘗試從新窗體調用函數,然後顯示窗體。問題是從窗體的方法沒有被調用。我在IDE上得到一個錯誤,說Windows.Forms.Form不包含方法測試。

我創建的方法子窗體:

public static string test(string val) 
{ 
    this.username = val; 
} 

任何想法,我做錯了嗎?

+4

嗯,至少該方法不應該是一成不變的,這是因爲:1 - 你正試圖從它訪問的實例字段; 2 - 你試圖在Form2的實例上調用它。 – 2011-05-01 06:55:00

+1

當你調用它時,你沒有傳遞必要的'string'參數。 – jonsca 2011-05-01 06:57:47

+0

對不起,jonsca,我輸入並忘記傳遞字符串。 – 2011-05-01 07:00:37

回答

2

你的方法被定義爲靜態的,所以它不可能在instace上調用它。 你應該eaither不使其靜態的,或者從靜態調用它:

Form2.test(); 
+0

即使我沒有使它靜止,它仍然不起作用。 – 2011-05-01 07:01:41

+0

啊,修好了。我創建了一個Form類型而不是Form2類型。 Form2是兒童的形式類(我知道的名字很差)。現在工作。 – 2011-05-01 07:03:51

0

用途:

Form2.test(); 

static成員直接相關的類不其實例。這意味着如果您需要訪問static成員,則必須使用它才能訪問它,它是容器,類型爲

不僅如此,你不能訪問正常成員從static的。您只能從同行訪問static會員。

你不能做一個static方法裏面如下:

this.Member ... 
相關問題