0

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

这是网格:

在此处输入图像描述

我花了很多时间试图弄清楚这一点,这让我发疯。

其他人可以看到我做错了什么,因为我对此很陌生吗?

有什么常见的陷阱吗?

克里斯

4

1 回答 1

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;
  }
}
于 2013-03-08T23:23:26.627 回答