可能重复:
Referencing control on one form from another form VB.NET
这是我上一个问题之后的问题。这是今天的最后一次:D当我有两种形式。一个是主要的整个应用程序,第二个只是设置。我需要在Form2中设置一个变量,然后在关闭此表单后,需要Form1从form2获取此变量。传输此变量的最简单方法是什么?
答案 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个模型)。