单击datagridviewbutton单元格时如何将datagridview值传递给另一个表单

时间:2015-02-12 02:33:34

标签: c# datagridview

我一直在处理我的datagridview属性,并想知道如何将所选数据行的值传递给另一个表单。

private void dgvRptView_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        var senderGrid = (DataGridView)sender;
        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
            e.RowIndex >= 0)
        {

                Form Update = new frmUpdateSvcRep();
                Update.Show();
        }
     }
显然,我只能在datagridview中添加按钮,并在点击按钮时添加了一个事件,它会显示一个表单。然而。我一直试图将我选择的值传递给另一个文本框,但无效。有人可以帮我弄清楚如何通过点击我的按钮传递值?这是我的图片标题。

How to pass the values of my current selected row to another form

这是我的另一个表单,就像我点击Datagridview中的编辑按钮一样。

how can I pass the value in the rows I selected

我现在真的超出了我的深度..我选择创建构造函数,但我不知道如何在此场景中实现它。在此先感谢

1 个答案:

答案 0 :(得分:1)

有几种方法可以在Forms之间传递数据。正如您所提到的,一种方法是在实例化Form时通过构造函数传递:

private void dgvRptView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (dgvRptView.Columns[e.ColumnIndex] is DataGridViewButtonColumn &&
        e.RowIndex >= 0)

    if (dgvRptView.CurrentRow != null)
    {
        var row = dgvRptView.CurrentRow.Cells;

        DateTime age = Convert.ToDateTime(row["MyColumn"].Value);
        string name = Convert.ToString(row["MyName"].Value);

        Form Update = new frmUpdateSvcRep(age, name);
        Update.Show();
    }
}

更新其他表单的构造函数以接受这些参数:

public class Update : Form
{
    public Update(DateTime age, string name)
    {
        // do whatever you want with the parameters
    }

    ...
}

传递整个dgvRptView.CurrentRow对象可能很诱人,但我建议不要这样做。然后,您的另一个表单必须知道DataGridView中的列,以便它可以访问值,这不是它应该关注的值,并且可能在列名称更改时导致运行时错误。