Мне удалось найти решение вскоре после публикации вопроса. Для всех остальных:
Проблема заключалась в том, что я пытался присвоить DataGridViewComboBoxCell.Value
объекту, ожидая, что, поскольку ячейка связана с источником данных, она автоматически найдет объект в источнике и обновит его.
На самом деле это не так, вам нужно установить значение, равное значению свойства ValueMember
, чтобы оно корректно обновляло значение и привязку. Я полагаю, что я использовал свойство «Имя» для ValueMember
и DisplayMember
(управляет рендерингом в ячейке), поэтому установка значения interface.ToString()
(вместо экземпляра интерфейса) работает в большинстве случаев. Затем я улавливаю и игнорирую любые исключения DataError, возникающие при изменении источника.