2011-04-19 42 views
0

可能重複:
Referencing control on one form from another form VB.NET如何記憶兩種形式之間的變量?

這是繼我的最後一個問題的問題。它是今天的最後一次:D當我有兩種形式。其中一個主要用於整個應用,另一個用於設置。我需要在Form2中設置一個變量,然後關閉此窗體後,需要Form1從form2中獲取此變量。傳遞這個變量的最簡單方法是什麼?

+3

聽起來不太明顯,但你真的需要拿起一本關於.NET中面向對象編程的書。你所提出的問題是非常基本的,雖然你可以在Stack Overflow上提出基本問題,但是你得到的答案忽略了很多非常重要的細節。當你學習一門新語言時,理解發生了什麼非常重要,許多答案都會教你一些不好的做法。 – 2011-04-19 15:16:55

回答

0

創建窗體2一個屬性:

public MyType MyVariable { get; set; } 

設置屬性,窗體2(例如,在窗體的關閉事件)......

this.MyVariable = ...; 

...並讀取屬性Form1:

... 
myForm2Instance.ShowDialog(); // this is where you show Form2 
var theValueFromForm2 = myForm2Instance.MyVariable; 
+0

嗯....我寫了「public MyType MyVariable {get; set;}」在form2的某處.....在form2中聲明MyVariable,但仍然無法獲得form1中的值......你的意思myForm2Instance?我很抱歉,我是比格犬。 – Nasgharet 2011-04-19 15:26:12

+0

@Nasgharet:你如何打開Form2? – Heinzi 2011-04-19 15:30:21

+0

Form form2 = new Form(); form2.Show(); – Nasgharet 2011-04-19 18:19:21

0

最簡單的(雖然不是最好的)方法是將值存儲在Form2上的公共屬性中,從Form1訪問。

0

您可以在構造函數中將信息傳遞給Form2,並在Form2上具有公開該信息的屬性。然後,當您完成Form2時,可以在Form1中聲明myForm2.ThePropertyThatHasTheData。

0

你的兩種形式是觀點。所以,你只需要一個模型類。

創建類稱爲模型或similiar 從Form1中創建一個公共屬性調用設置或similiar

實例化模型

模型M =新模型();

在構造函數或設置私有成員期間將模型傳遞給Form2。

Form2 f = new Form2();

f.Model = m;

f.ShowDialog();

假設該設置是form2上的文本框。在表單關閉之前,設置設置:

Model.Setting = this.textBoxSetting.Text();

由於Model是一個對象並通過引用傳遞,因此form1中的模型對象將自動更新,因爲它是引用的對象。

如果您希望在您的應用程序中共享數據,請考慮將模型設爲靜態,或者如果每個應用程序僅使用1個模型,請遵循單例模式。