2011-10-11 15 views
8

Ho associato correttamente il mio DataGridView a un elenco. Ma la griglia non si aggiorna quando cambio alcune delle proprietà di uno degli oggetti all'interno dell'elenco. Se faccio clic sulla cella (o riduci a icona e quindi ingrandisci modulo), il valore visualizzato viene aggiornato.Perché le celle DataGridView non vengono aggiornate?

Ho letto here che dovrei usare un BindingList. L'elenco che sto usando è un tipo di interfaccia che non implementa IBindingList. Ma il tipo concreto usato per inizializzare l'elenco eredita da BindingList. Qualche idea?

+0

qual è la vostra piattaforma? WPF? WinForms? Silverlight? (ecc.) –

+0

Siamo spiacenti, è Winforms. – bsh152s

risposta

9

L'elenco deve implementare IBindingList (o essere un BindingList) e l'oggetto deve implementare INotifyPropertyChanged. Entrambe le condizioni sono necessarie affinché il tuo DataGridView si leghi correttamente.

Quindi, se l'origine dati sarebbe, per esempio, MyList<MyClass>, MyList devono implementare IBindingList e MyClass deve implmenent INotifyPropertyChanged.

Ecco un chiaro esempio: http://crazorsharp.blogspot.com/2009/06/inotifypropertychanged-how-to-and-when.html

+0

Il codice che stavo usando stava implementando INotifyPropertyChanged e l'elenco era una lista di binding. Ma una bandiera impostata stava spegnendo le notifiche. Questa risposta mi ha aiutato a capirlo. – bsh152s

Problemi correlati