如何记住两种形式之间的变量?

时间:2011-04-19 15:07:51

标签: c#

  

可能重复:
  Referencing control on one form from another form VB.NET

这是我上一个问题之后的问题。这是今天的最后一次:D当我有两种形式。一个是主要的整个应用程序,第二个只是设置。我需要在Form2中设置一个变量,然后在关闭此表单后,需要Form1从form2获取此变量。传输此变量的最简单方法是什么?

5 个答案:

答案 0 :(得分:0)

在Form2中创建一个属性:

public MyType MyVariable { get; set; }

在Form2中设置属性(例如,在窗体的Close事件中)...

this.MyVariable = ...;

...并在Form1中读取属性:

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

答案 1 :(得分:0)

最简单(尽管不是最好)的方法是将值存储在Form2上的公共属性中,然后可以从Form1访问它。

答案 2 :(得分:0)

您可以将信息传递给构造函数中的Form2,并在Form2上具有公开信息的属性。然后,当你完成Form2之后,你可以在Form1中说myForm2.ThePropertyThatHasTheData。

答案 3 :(得分:0)

不是“最简单的方式”......但一般来说,MVC模式是组织应用程序UI层的当前最新技术。您可以将UI与UI显示的数据以及应用程序中的流控制完全分离。

参见例如https://stackoverflow.com/questions/2406/looking-for-a-mvc-sample-for-winforms

答案 4 :(得分:0)

您的两个表单是视图。所以,你只需要一个模型类。

创建一个名为Model或类似的类 创建名为Setting或similiar

的公共属性

从Form1

实例化模型

模型m =新模型();

在构造函数中将Model传递给Form2或设置私有成员。

Form2 f = new Form2();

f.Model = m;

f.ShowDialog();

假设该设置是form2上的文本框。在表单关闭之前,设置设置:

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

由于Model是一个对象并通过引用传递,因此form1中的模型对象将自动更新,因为它是引用的对象。

如果您希望在整个应用程序中共享数据,请考虑使模型静态或遵循单例模式(如果每个应用程序仅使用1个模型)。