Editor di raccolta in fase di esecuzione
-
03-07-2019 - |
Domanda
Sto lavorando ad un'applicazione per modificare coppie nome / valore usando una griglia di proprietà. Alcune delle proprietà nel mio file di classe sono raccolte ListDictionary. È lì un attributo Editor che posso applicare alla dichiarazione di proprietà che farà il Il Collection Editor funziona in fase di esecuzione? In caso contrario, è possibile ereditare da ComponentModel.Design.CollectionEditor da utilizzare in fase di esecuzione? Devo poter aggiungere, elimina e modifica i valori della raccolta. Molte grazie, Terry
Soluzione
Penso che questo articolo spieghi di cosa hai bisogno: Come modificare e persistere le raccolte con CollectionEditor
Altri suggerimenti
dall'articolo di codeproject [ http://www.codeproject.com /KB/cs/dzcollectioneditor.aspx][1]
Esistono tre requisiti che a la raccolta dovrebbe incontrarsi per essere persistito con successo con il CollectionEditor:
- Innanzitutto, la raccolta deve implementare l'interfaccia IList (ereditando da System.Collections.CollectionBase è nella maggior parte dei casi l'opzione migliore).
Secondo, deve avere una proprietà Indexer (Item in VB.NET). Il tipo di questa proprietà è utilizzata dal CollectionEditor per determinare il tipo predefinito delle istanze che verrà aggiunto alla raccolta.
Per capire meglio come funziona, dai un'occhiata a GetItemType () funzione del CustomCollectionEditorForm:
Tipo virtuale protetto GetItemType (IList coll) { PropertyInfo pi = coll.GetType (). GetProperty (" Item " ;, nuovo tipo [] {typeof (int)}); return pi.PropertyType }
Terzo, la classe di raccolta deve implementare una o entrambe le seguenti metodi: Aggiungi e AddRange. Sebbene L'interfaccia di IList ha un membro Aggiungi e CollectionBase implementa IList, tu devo ancora implementare un metodo Add per la tua collezione, considerato questo CollectionBase dichiara un esplicito implementazione dei membri dell'IList Aggiungi membro. Il designer serializza la collezione secondo cosa metodo che hai implementato. Se tu hanno implementato entrambi, l'AddRange è preferito.
In questo articolo troverai tutto il necessario per implementare la tua raccolta sulla griglia delle proprietà