La mise à jour de BindingSource dans WinForms ne met pas à jour la collection de sources de données

Je veux afficher une collection personnalisée dans un DataGridView dans une application Windows Forms. Cette coutume de la collection met en œuvre ICollectionet IEnumerable. J'ai mis en place un BindingSourceà l'aide de la collection .Propriété DataSource. Le DataGridView est configuré pour utiliser mon BindingSource que c'est de la source de données. Quand j'ajoute un nouvel élément à la collection à l'aide de la BindingSource.Add() méthode, la DataGridView les mises à jour correctement avec le nouvel élément. Le BindingSource source de données, d'autre part, ne pas:

MyCustomCollection myCollection = new MyCustomCollection();

myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);

myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);

Dans le code ci-dessus, myBindingSource interne de la Liste contient le nombre d'enregistrements (3), et le DataGridView contient également trois enregistrements, mais myCollection ne contient que deux enregistrements. Je sais que la modification de la sous-jacentes myCollection ne sera PAS de mise à jour de la BindingSource ou la DataGridViewcomme il n'est pas un BindingList<T>mais j'étais sous l'impression que la mise à jour d'un BindingSource directement permettrait de s'assurer que myCollection a été mis à jour à la même heure.

Est-il un moyen d'utiliser une collection qui n'est pas un BindingList<T> et l'ont mis à jour lors de l'interaction avec le BindingSource directement?

Mise à jour: Une façon que j'ai obtenu les données à jour sur toutes les pièces de la Collection, BindingSource, DataGridView) est comme suit:

myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;

Je suis assez sûr qu'il y a une meilleure façon de s'attaquer à ce problème, mais c'est la seule méthode qui produit les résultats que j'attendais.

source d'informationauteur Jeff Clare