Я просто пытаюсь удалить строку из DataGridView. По сути, первый столбец представляет собой поле со списком, и когда пользователь выбирает «[Удалить]» из поля со списком, следует удалить всю строку. Итак, у меня есть этот код события OnCellEndEdit:
if (grid.CurrentCell.ColumnIndex == 0 && grid.CurrentRow.Cells[0].Value.ToString()=="[Remove]") {
grid.EndEdit();
grid.Rows.RemoveAt(grid.CurrentRow.Index);
}
Вместо того, чтобы удалить строку, выдается исключение:
Операция недопустима, поскольку она приводит к повторному вызову функции SetCurrentCellAddressCore.
Я пытался переместить CurrentRow в другой столбец перед удалением, например:
DataGridViewRow deleteRow = grid.CurrentRow;
grid.CurrentRow.Selected = false;
grid.Rows[deleteRow+1].Selected = true;
grid.Rows.RemoveAt(deleteRow);
Та же проблема. Атрибут AllowUserToDeleteRows сетки имеет значение true. Я не привязываю данные к этому элементу управления.
Я считаю, что проблема заключается в моей привязке к событию CellEndEdit, как будто я удаляю строку из события OnClick элемента управления кнопки, все в порядке.
Могу ли я программно вызвать событие OnClick кнопки? Как?