我正在尝试从datagridviewcell获取值并计算和更改另一个单元格的值。
由于某种原因,我遇到堆栈溢出异常,代码:
private void grdWarehouseCounts_CellContentChanged(object sender, DataGridViewCellEventArgs e)
{
// calculate variance
DataGridView sendergrid = (DataGridView)sender;
if (sendergrid.SelectedCells[0].ColumnIndex == 3)
{
decimal Qty = Convert.ToDecimal(sendergrid.Rows[sendergrid.SelectedCells[0].RowIndex].Cells[3].Value);
decimal Count = Convert.ToDecimal(sendergrid.Rows[sendergrid.SelectedCells[0].RowIndex].Cells[4].Value);
sendergrid.Rows[sendergrid.SelectedCells[0].RowIndex].Cells[4].Value = Qty - Count;
}
}
这是网格:
我花了很多时间试图解决这个问题,这让我感到疯狂。
其他人是否可以看到我做错的事情,因为我对此很陌生?
任何常见问题?
克里斯
答案 0 :(得分:2)
试试这个(而不是使用SelectedCells[0]
,使用e.ColumnIndex
和e.RowIndex
):
private void grdWarehouseCounts_CellContentChanged(object sender, DataGridViewCellEventArgs e)
{
// calculate variance
DataGridView sendergrid = (DataGridView)sender;
//if (sendergrid.SelectedCells[0].ColumnIndex == 3)
if (e.ColumnIndex == 3)
{
decimal Qty = Convert.ToDecimal(sendergrid.Rows[e.RowIndex].Cells[3].Value);
decimal Count = Convert.ToDecimal(sendergrid.Rows[e.RowIndex].Cells[4].Value);
sendergrid.Rows[e.RowIndex].Cells[4].Value = Qty - Count;
}
}