Несколько замечаний по этому поводу, которые, вероятно, следует подтвердить / исправить.
if (dataGridView1.Rows[i].Cells[1].Value == null)
sum += 0;
else
sum += int.Parse(dataGridView1.Rows[i].Cells[0].Value.ToString()) *
int.Parse(dataGridView1.Rows[0].Cells[1].Value.ToString());
Что вы делаете с этой строкой?Здесь вы проверяете значение во втором столбце рассматриваемой строки, но затем добавляете только элементы из первого столбца (и умножаете каждый на некоторое число из первого ряда, второго столбца).Это не совсем понятно, что вы пытаетесь сделать.Это одна из трудностей, возникающих при работе с DataGridView, состоит в том, что существует гораздо больше догадок, чем изменение связанного источника данных.Например, вы уверены, что столбец (индексы) действительно ссылаются на интересующие вас элементы?Вы держите это последовательным?Кроме того, я считаю, что событие CellEndEdit
срабатывает только тогда, когда фокус теряется из определенной ячейки после редактирования.
Я собираюсь дать некоторый модифицированный код, но, не зная дополнительной информации, я мог бы просто получитьэто неправильно.Исходя из того, что вы сказали, вам нужна только сумма первых 3 значений столбца, поэтому этот код и делает.Если это не так, пожалуйста, скажите мне, и я исправлю это (если смогу).
// Note: Using DataGridView[int col, int row] syntax
int sum = 0;
for (int i = 0; i < 3; i++)
{
if (dataGridView1[1,i] != null)
sum += int.Parse(dataGridView1[1,i].ToString());
}
dataGridView1[1,3] = sum;