可能重複:
Referencing control on one form from another form VB.NET如何記憶兩種形式之間的變量?
這是繼我的最後一個問題的問題。它是今天的最後一次:D當我有兩種形式。其中一個主要用於整個應用,另一個用於設置。我需要在Form2中設置一個變量,然後關閉此窗體後,需要Form1從form2中獲取此變量。傳遞這個變量的最簡單方法是什麼?
可能重複:
Referencing control on one form from another form VB.NET如何記憶兩種形式之間的變量?
這是繼我的最後一個問題的問題。它是今天的最後一次:D當我有兩種形式。其中一個主要用於整個應用,另一個用於設置。我需要在Form2中設置一個變量,然後關閉此窗體後,需要Form1從form2中獲取此變量。傳遞這個變量的最簡單方法是什麼?
創建窗體2一個屬性:
public MyType MyVariable { get; set; }
設置屬性,窗體2(例如,在窗體的關閉事件)......
this.MyVariable = ...;
...並讀取屬性Form1:
...
myForm2Instance.ShowDialog(); // this is where you show Form2
var theValueFromForm2 = myForm2Instance.MyVariable;
最簡單的(雖然不是最好的)方法是將值存儲在Form2上的公共屬性中,從Form1訪問。
您可以在構造函數中將信息傳遞給Form2,並在Form2上具有公開該信息的屬性。然後,當您完成Form2時,可以在Form1中聲明myForm2.ThePropertyThatHasTheData。
不是「最簡單的方法」......但一般來說,MVC模式是組織應用程序的UI層的最新技術。您可以將UI與UI顯示的數據以及應用程序中的流量控制完全分離。
見例如https://stackoverflow.com/questions/2406/looking-for-a-mvc-sample-for-winforms
你的兩種形式是觀點。所以,你只需要一個模型類。
創建類稱爲模型或similiar 從Form1中創建一個公共屬性調用設置或similiar
實例化模型
模型M =新模型();
在構造函數或設置私有成員期間將模型傳遞給Form2。
Form2 f = new Form2();
f.Model = m;
f.ShowDialog();
假設該設置是form2上的文本框。在表單關閉之前,設置設置:
Model.Setting = this.textBoxSetting.Text();
由於Model是一個對象並通過引用傳遞,因此form1中的模型對象將自動更新,因爲它是引用的對象。
如果您希望在您的應用程序中共享數據,請考慮將模型設爲靜態,或者如果每個應用程序僅使用1個模型,請遵循單例模式。
聽起來不太明顯,但你真的需要拿起一本關於.NET中面向對象編程的書。你所提出的問題是非常基本的,雖然你可以在Stack Overflow上提出基本問題,但是你得到的答案忽略了很多非常重要的細節。當你學習一門新語言時,理解發生了什麼非常重要,許多答案都會教你一些不好的做法。 – 2011-04-19 15:16:55