【问题标题】:C#- Data transfer between two formsC#- 两种形式之间的数据传输
【发布时间】:2016-01-21 11:43:09
【问题描述】:

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

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

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

【问题讨论】:

  • 您需要发布更多相关代码。您是否每次都创建一个新的 Form1?您不应该传递对 Form1 的引用吗?然后在 Form2 上做 form1.textBox1...

标签: c# winforms


【解决方案1】:

将 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();

【讨论】:

    【解决方案2】:

    你可以试试这样的。

    当您单击frm1.SimpleButton 时,此函数将被称为显示您的Form2。在 Form2 上,您必须设置 InnerProperty(来自您的数据网格?)当您关闭 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;
      }
    }
    

    【讨论】:

      【解决方案3】:

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

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

      感谢您的帮助。

      【讨论】:

        猜你喜欢
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多