Я использую VS 2008 / C # и привязываю локальный список вспомогательных классов в качестве источника данных для элемента управления DataGridView. Вызов метода Remove () в моем списке вспомогательных классов вызывает событие CellFormatting объекта DataGridView, что имеет смысл (немного).
При удалении того, что происходит с DataBoundItem последней строки в сетке (если сетка имеет более одной строки), коллекция строк DataGridView не обновляется до того, как сработает это событие. Итак, в обработчике CellFormatting я получаю исключение IndexOutOfRangeException, поскольку коллекция строк слишком велика.
Я попытался удалить строку с помощью метода DataGridView.Rows.Remove () и связать ее с помощью BindingSource, а не привязывать List напрямую как источник данных.
Я нашел несколько ссылок на это вхождение через Google, но ответы либо не были получены, либо сказано, что он использует метод Delete () в DataGridView или в коллекции DataGridView.Rows - ни один из которых в настоящее время не существует.
Сортировка также не является проблемой, поскольку выполнение / невыполнение сортировки приводит к тому же результату.
Единственное исключение из «последней строки», являющегося проблемой для удаления, - это если DataGridView содержит только одну строку - в этом случае все работает нормально.