A List<>es simplemente una matriz de cambio de tamaño automático, de elementos de un tipo determinado, con un par de funciones auxiliares (por ejemplo: ordenar). Son solo los datos y es probable que los utilice para ejecutar operaciones en un conjunto de objetos en su modelo.
A BindingList<>es un envoltorio alrededor de una lista escrita o una colección, que implementa la IBindingListinterfaz. Esta es una de las interfaces estándar que admiten el enlace de datos bidireccional. Funciona implementando el ListChangedevento, que se genera cuando agrega, elimina o establece elementos. Los controles enlazados escuchan este evento para saber cuándo actualizar su pantalla.
Cuando establece un DataSource de BindingSource en a List<>, crea internamente un BindingList<>para envolver su lista. Es posible que desee envolver previamente su lista con un BindingList<>usted mismo si desea acceder a ella fuera de BindingSource, pero por lo demás es lo mismo. También puede heredar de BindingList<>para implementar un comportamiento especial al cambiar elementos.
IEditableObjectes manejado por BindingSource. Llamará a BeginEdit en cualquier objeto de implementación cuando cambie los datos en cualquier control enlazado. Luego puede llamar a EndEdit / CancelEdit en BindingSource y lo pasará a su objeto. Moverse a una fila diferente también llamará a EndEdit.
Una BindingList permite la vinculación de datos bidireccional mediante el uso de eventos, una Lista no activa eventos cuando cambia su colección.
No creo que solucione su problema particular.
fuente