如何记住两种形式之间的变量
本文关键字:之间 变量 何记住 两种 | 更新日期: 2023-09-27 17:50:29
可能重复:
从另一个窗体VB.NET 引用一个窗体上的控件
这是我最后一个问题之后的问题。这是今天的最后一张:D当我有两张表格的时候。一个是主要的整体应用,第二个只是设置。我需要在Form2中设置一个变量,然后在关闭这个表单后,需要Form1从Form2中获取这个变量。传递这个变量最简单的方法是什么?
在Form2:中创建属性
public MyType MyVariable { get; set; }
在Form2中设置属性(例如,在窗体的Close事件中(。。。
this.MyVariable = ...;
并读取Form1:中的属性
...
myForm2Instance.ShowDialog(); // this is where you show Form2
var theValueFromForm2 = myForm2Instance.MyVariable;
最简单(虽然不是最好(的方法是将值存储在Form2上的公共属性中,然后可以从Form1访问该属性。
您可以将信息传递到构造函数中的Form2中,并在Form2上拥有一个公开信息的属性。然后,当您完成Form2时,您可以说myForm2.ThePropertyThatHasTheData在Form1中。
不是"最简单的方法"。。。但一般来说,MVC模式是当前用于组织应用程序的UI层的最先进的模式。您可以将UI与UI显示的数据以及应用程序中的流控制完全分离。
请参见示例https://stackoverflow.com/questions/2406/looking-for-a-mvc-sample-for-winforms
您的两个表单都是视图。所以,你只需要一个模型类。
创建一个名为Model或similar的类创建一个名为Setting或类似的公共属性
从Form1 实例化模型
Model m=new Model((;
在构造函数或设置私有成员期间将Model传递给Form2。
Form2 f=新Form2((;
f。型号=m;
f。ShowDialog((;
假设设置是form2上的一个文本框。在表单关闭之前,设置设置:
模型。Setting=this.textBoxSetting.Text((;
由于模型是一个对象并通过引用传递,因此form1中的模型对象将自动更新,因为它是被引用的对象。
如果您希望在整个应用程序中共享数据,请考虑将模型设置为静态的,或者如果每个应用程序只使用一个模型,则遵循singleton模式。