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 IBindingList
interfaz. Esta es una de las interfaces estándar que admiten el enlace de datos bidireccional. Funciona implementando el ListChanged
evento, 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.
IEditableObject
es 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.