C# - 两种表单之间的数据传输

时间:2016-01-21 11:43:09

标签: c# winforms

我有两种形式。第一个有一个文本框。第二个有一个devexpress数据网格。 我想实现这个目标: 首先单击一个按钮,然后打开form2。 如果我在form2中的数据网格中单击一行,则该值应显示在form1的文本框内。(form1已经打开。) 我是初学者。谢谢你的帮助。

Form1 frm1 = new Form1();
frm1.textBox1.Text = gridView1.GetFocusedRowCellValue("ID").ToString();
frm1.Show(); 

当我这样做时,会打开一个新表单。我不想打开一个新的表格。 Form1已经打开。我想在其文本框中添加值。

3 个答案:

答案 0 :(得分:2)

将form1作为对form2的引用:

在表单1上的按钮单击处理程序中打开表单2

private void Button_Click(object sender, EventArgs e)
{
    Form2 frm2 = new Form2(this);
    frm2.Show();
}

form2代码

private Form1 frm1;
// constructor (pass frm1 as reference)
public Form2(Form1 frm1) {
    this.frm1 = frm1;
}

//put this in your event handler for a row click in the grid
frm1.textBox1.Text = gridView1.GetFocusedRowCellValue("ID").ToString();

答案 1 :(得分:0)

你可以尝试这样的事情。

当你点击frm1.SimpleButton时,这个函数将被称为show your Form2。在Form2上,您必须设置InnerProperty(来自您的数据网格?)a当您关闭Form2时,您可以使用此属性。

private void SimpleButton_Click(object sender, EventArgs e)
{
  using (Form2 frm = new Form2())
  {
    frm.InnerProperty = "default text";
    DialogResult result = frm.ShowDialog();
    SimpleButton.Text = frm.InnerProperty;
  }
}

答案 2 :(得分:0)

最后,我解决了这个问题。

Application.OpenForms["form1"].Controls["textBox1"].Text = 
               gridView1.GetFocusedRowCellValue("ID").ToString();

感谢您的帮助。