2011-04-19 73 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个模型,请遵循单例模式。