Я пытаюсь принимать значения из datagridviewcell и вычислять и изменять значение другой ячейки.Событие DataGridView CellContentChanged - исключение StackOverflow - странная ситуация
По какой-то причине, я бегу в исключение переполнения стека, код:
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;
}
}
Вот сетка:
Я потратил много времени, пытаясь понять это и это сводит меня с ума.
Может ли кто-нибудь еще увидеть что-то, что я делаю неправильно, поскольку я довольно новичок в этом?
Любые распространенные ошибки?
Chris
Я не слишком хорошо знакомы с WinForms вещи, но это возможно, что вы обжиг 'grdWarehouseCounts_CellContentChanged 'изнутри себя, путем изменения значения ячейки в последней строке вашего оператора if? –
с использованием if (sendergrid.SelectedCells [0] .ColumnIndex == 3) следует предотвратить этот сценарий, исправить? Индекс столбца должен быть 3 - и модификация столбца составляет 4 –
. Я думаю, что то, что @AbeMiessler упомянул, именно то, что произошло. – hattenn