如何将值从一种forms传递到另一种forms?

考虑我有两种窗体forms的情况,比如F1F2 。 使用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模式或类似的)。 关键是你按以下顺序做事:

  1. 创建要显示的表单的实例
  2. 将数据传输到该新表单实例
  3. 显示表格

当您以模态方式显示表单时,它将阻止调用表单中的代码,直到新表单关闭为止,因此您不能在那里使用能够以简单方式将信息传输到新表单的代码(这可能,但不必要地复杂) 。

[编辑:扩展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