La actualización de BindingSource en WinForms no actualiza la colección de fuentes de datos
Quiero mostrar una colección personalizada en unDataGridView
en una aplicación de Windows Forms. Esta colección personalizada implementaICollection
yIEnumerable
. He establecido unBindingSource
, utilizando la colección como la propiedad .DataSource. losDataGridView
está configurado para usar miBindingSource
ya que es DataSource. Cuando agrego un nuevo artículo a la colección usando elBindingSource.Add()
método, elDataGridView
Actualiza correctamente con el nuevo elemento. losBindingSource
DataSource, por otro lado, no:
MyCustomCollection myCollection = new MyCustomCollection();
myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);
myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);
En el código anterior, la Lista interna de myBindingSource contiene el número correcto de registros (3), y elDataGridView
también contiene tres registros, pero myCollection solo contiene dos registros. Sé que cambiar el myCollection subyacente NO actualizará elBindingSource
o laDataGridView
, como no es unBindingList<T>
, pero estaba bajo la impresión de que actualizar unBindingSource
directamente aseguraría que myCollection se actualizara al mismo tiempo.
¿Hay alguna manera de usar una colección que no sea unaBindingList<T>
y tenerlo actualizado al interactuar con elBindingSource
¿directamente?
Actualizar: Una forma en que he actualizado los datos en todas las partes (Collection, BindingSource, DataGridView) es la siguiente:
myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;
Estoy bastante seguro de que hay una mejor manera de atacar este problema, pero este es el único método que ha generado los resultados que esperaba.