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