DataGridView CellContentChanged事件 - StackOverflow异常 - 奇怪的情况

时间:2013-03-08 23:01:12

标签: c# datagrid

我正在尝试从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;
  }
}

这是网格:

enter image description here

我花了很多时间试图解决这个问题,这让我感到疯狂。

其他人是否可以看到我做错的事情,因为我对此很陌生?

任何常见问题?

克里斯

1 个答案:

答案 0 :(得分:2)

试试这个(而不是使用SelectedCells[0],使用e.ColumnIndexe.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;
  }
}