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

how to pass datagridview value to another form when the datagridviewbutton cell is clicked

我一直在研究我的 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 中添加按钮,并在单击该按钮时添加一个事件,它会显示一个表单。然而。我一直在尝试将我选择的值传递给另一个文本框,但无济于事。有人可以帮我弄清楚如何在我单击按钮时传递值吗?这是我的图片说明。

这是我单击 Datagridview 中的编辑按钮时的另一个表单。

我现在真的无法理解。我选择创建构造函数,但我不知道如何在此场景中实现它。提前致谢

有几种方法可以实现窗体之间的数据传递。正如您提到的,一种方法是在实例化 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 中的列,以便它可以访问值,这不是它应该关心的事情,并且当列名更改时可能会导致运行时错误。