将值从DataGridView传递到单独的表单

时间:2016-01-13 13:54:33

标签: c# winforms visual-studio

我想要做的是当用户双击一行时会弹出一个单独的表单。然后使用TextBoxes中的值填充新表单中的DataGridView。我可以通过双击显示表单,之后我不知道该怎么办? 我的代码:

private void dgvTable_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
    FrmInfo frmInfo = new FrmInfo();

    frmInfo.ShowDialog();
    frmInfo.Dispose();
    var notes = dgvTable.Rows[e.RowIndex].Cells["Notes"].Value;   
}

由于

1 个答案:

答案 0 :(得分:1)

很容易! 首先,您无法以vb.net正常的方式访问c#中的其他表单控件,因此您可以执行以下操作:

  • 准备表单以接收数据:

1-在表单构造函数中,添加用于处理接收数据的参数。

2-在InitializeComponent()之后; void添加如下代码行:

public frm1(string txt1, string txt2, string txt3)
{
     InitializeComponent();
     textBox1.Text = txt1;
     textBox2.Text = txt2;
     textBox3.Text = txt3;
}
  • 处理datagridview dg_RowHeaderMouseDoubleClick 事件:

    注意:你也可以在你的例子中处理CellDoubleClick事件,但我的事件更有意义。

1-创建变量以保存发送的数据。

2-为将处理数据的表单创建一个新的表单实例,并以所需的顺序将行单元格数据传递给方法参数。

private void dg_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
    //Collect the row cells values:
    string val1 = dg.Rows[e.RowIndex].Cells[0].Value.ToString() //data of the first cell in the row
    string val2 = dg.Rows[e.RowIndex].Cells[1].Value.ToString() //data of the second cell in the row
    string val3 = dg.Rows[e.RowIndex].Cells[2].Value.ToString() //data of the third cell in the row
    //Initialize a new instance of the data handle form and send the row data to it:
    var newFrm = new frm1(val1, val2, val3);
    newFrm.Show();                
}

依此类推,您可以创建尽可能多的参数。