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.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;
  }
}
于 2013-03-08T23:23:26.627 に答える