Есть несколько важных интерфейсов для привязки данных; в частности, IBindingList
, в котором есть событие ListChanged
, которое DataGridView
может прослушивать.
Можно ли изменить конкретный список на BindingList<T>
? Что должно дать вам большую часть этого бесплатно? Вам не нужно менять тип возвращаемого значения, так как BindingList<T> : IList<T>
, а DataGridView
знает только об фактическом объекте (ему все равно, что вы называете его IList<T>
).
Другой прагматичный вариант - просто сбросить привязку данных на DataGridView
- возможно, установить DataSource
на null
и затем обратно:
object tmp = grid.DataSource;
grid.DataSource = null;
grid.DataSource = tmp; // low-tech data-source reset