可能重复:
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