A List<>
è semplicemente un array ridimensionato automaticamente, di elementi di un dato tipo, con un paio di funzioni di supporto (ad esempio: sort). Sono solo i dati e probabilmente li utilizzerai per eseguire operazioni su un insieme di oggetti nel tuo modello.
A BindingList<>
è un wrapper attorno a un elenco digitato o una raccolta, che implementa l' IBindingList
interfaccia. Questa è una delle interfacce standard che supportano l'associazione dati bidirezionale. Funziona implementando l' ListChanged
evento, che viene generato quando si aggiungono, rimuovono o impostano elementi. I controlli associati ascoltano questo evento per sapere quando aggiornare la loro visualizzazione.
Quando si imposta DataSource di BindingSource su a List<>
, viene creato internamente a BindingList<>
per racchiudere l'elenco. Potresti voler pre-avvolgere il tuo elenco con un BindingList<>
te stesso se vuoi accedervi al di fuori di BindingSource, ma per il resto è lo stesso. È inoltre possibile ereditare da BindingList<>
per implementare un comportamento speciale durante la modifica degli elementi.
IEditableObject
è gestito da BindingSource. Chiamerà BeginEdit su qualsiasi oggetto di implementazione quando modifichi i dati in qualsiasi controllo associato. Puoi quindi chiamare EndEdit / CancelEdit su BindingSource e lo passerà al tuo oggetto. Il passaggio a una riga diversa chiamerà anche EndEdit.