如何将值从一种forms传递到另一种forms?
考虑我有两种窗体forms的情况,比如F1
和F2
。 使用F1
,我现在调用了F2.ShowDialog()
。 这也将F2
放在屏幕上。 既然两种forms都可见,我怎样才能将数据从F1
传递到F2
? 此外,一旦F2
(modal dialog)完成,我如何将数据返回F1
?
有没有人考虑过将值传递给tag属性中的表单。
Form newForm = new form(); newForm.Tag = passValue; newform.showmodal();
当显示newform时,加载(或任何其他)例程可以使用标记中的数据
public void load() { if (this.Tag.length > 0) { // do something with the data } }
将此代码添加到f1中的相关位置。
Form f2 = new Form(); f2.ShowDialog();
HTH
int x=10; Form1 f2 = new Form1(x); f2.ShowDialog();
这是以传递值的forms写的。 要重新接收此值,您必须在接收的表单中创建新的构造函数
那将是那样的
public Form2(int x) { InitializeComponent(); this.x = x; }
当你从form2创建实例时,你会在第一个表单中注意到你有两个选择,其中一个让你传递值
假设您在Form1中有一个TextBox控件,并且您希望将值传递给Form2并以模态方式显示Form2。
在Form1中:
private void ShowForm2() { string value = TheTextBox.Text; Form2 newForm = new Form2(); newForm.TheValue = value; newForm.ShowDialog(); }
在Form2中:
private string _theValue; public string TheValue { get { return _theValue; } set { _theValue = value; // do something with _theValue so that it // appears in the UI } }
这是一种非常简单的方法,对于更大的应用程序可能不是最好的(在这种情况下,您可能希望研究MVC模式或类似的)。 关键是你按以下顺序做事:
- 创建要显示的表单的实例
- 将数据传输到该新表单实例
- 显示表格
当您以模态方式显示表单时,它将阻止调用表单中的代码,直到新表单关闭为止,因此您不能在那里使用能够以简单方式将信息传输到新表单的代码(这可能,但不必要地复杂) 。
[编辑:扩展Form2中的属性方法更加清晰]
如果您只想将数据推送到子对话框,请考虑向子对话框的构造函数添加参数,然后调用ShowDialog()。 但是,以另一种方式传递数据有点棘手。
让我重新构思我的问题,forms为f1,f2 … i cal表格f2 = new Form(); f2.ShowDialog();
//现在我需要将参数从f1窗口传递给f2(这是modal dialog)也将值从f2格式返回到f1
//现在使用共同命名空间中的变量(对于f1,f2)
考虑使用MVC模式,即不是在表单中包含太多数据并传递它们,而是使用能够保留内容的模型类。
使用定义的Type作为您的信息(class,struct …)并在Form1中声明一个变量
struct myData { String str1; String str2; } Public Class Form1 { Public myData dat; }
(注意:类型不应该是公开的,这只是为了这个例子)因此数据位于Form1中。 修改Form2的构造函数以接受Form1类型的参数。
public Form2(Form1 frm1) { mFrm1 = frm1; InitializeComponent(); }
现在,当您调用form2时,请发送正在进行调用的Form1实例 :
Form2 frm2 = new Form2(this); frm2.ShowDialog();
现在,当执行到达Form2时,您可以访问Form1中的MyData:
mFrm1.dat;
这样,Form1和Form2的两个实例都将引用一个位置的数据。 对表格的两个实例都可以进行更改/更新。
可能是我迟到了。 但所有可能想要的人。
在目标表单中有一个像这样定义的构造函数
public partial class Destination: Form { string valueAccepted; public Destination(string _valuePassed) { InitializeComponent(); this.valueAccepted= _valuePassed; } }
并在源表单中调用这样的表单
Source sourceForm= new Source ("value Passed"); sourceForm.ShowDialog();
这样,“值传递”从表单源传递到表单目标
有两种方法可以在两个表单之间传递数据,请检查这些链接,这些链接包含示例video
-FormToForm使用属性 – http://windowsclient.net/learn/video.aspx?v=108089
- FormToForm使用参数 – http://windowsclient.net/learn/video.aspx?v=105861