我一直在处理我的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中的编辑按钮一样。
我现在真的超出了我的深度..我选择创建构造函数,但我不知道如何在此场景中实现它。在此先感谢
答案 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中的列,以便它可以访问值,这不是它应该关注的值,并且可能在列名称更改时导致运行时错误。