2015-12-29 29 views
0

我是Visual Studio的新手,我使用Form1和另一個窗體Form2創建了一個項目。窗體2將這段代碼打開:在主窗體中更改變量(Winform c#)

Form2 form = new Form2(); form.Show();

當我單擊窗體2一個按鈕我想在我的Form1以改變一個變量。是否有捷徑可尋?

回答

0

假設Form1中是單個實例,可以將變量聲明爲在Form 1代碼公共靜態

public static int MyVariable; 

則可以內窗體2訪問它象下面這樣:

Form1.MyVariable = 5; 
+0

不知道爲什麼有人-1這個答案。 +1,因爲這是完全正確的。 –

0

Form2構造函數:

public Form2(Form1 fm) 
{ 
    this.Fm = fm; 
} 

並在Form1中調用它,如下所示:

Form2 form = new Form2(this); 
form.Show(); 

如果Form1不是單個實例,這很有用。

+0

您沒有提及「Fm」是什麼,並且用戶想要修改的變量不能設置爲私有。另一個選擇是使用靜態變量。 –

+1

'Fm'是窗體。認爲它是由這行'Form1 fm'推斷出來的,它告訴我們我們有一個名爲'fm'的Form1',它是與之相同的約定btn和txt的縮寫。所以,'this.Fm'與'fm'的名字相同,所以可以認爲它是'Form1',考慮到我們正在通過這種類型。而且,即使使用靜態變量,用戶仍然僅限於公共數據。 – AustinWBryan

+0

並不意味着它是什麼,而是你聲明它的地方。如此,您將得到一個編譯器錯誤,指出Fm不存在。 –

0

您可以在Form1中創建一個靜態變量,這是您需要更改的變量。讓它成爲int x例如

public static int x= 0; 

那裏必須Form1 然後在函數內部的按鈕,點擊可以定義在Form2行:

Form1.x = //value; 
+1

與@Ramazan Binarbasi的回答有何不同? –

+0

哦,這不是......我剛剛看到他的評論。 –