2010-03-02 7 views
5

Ho creato un controllo utente in un'applicazione Windows C# 3.5 e ha un certo numero di proprietà (string, int, colore, ecc). Questi possono essere modificati nella finestra delle proprietà e i valori vengono mantenuti senza problemi.NET WinForm non persistere di una proprietà di tipo List <MyClass>

Tuttavia ho creato un proprietà come

public class MyItem 
    { 
     public string Text { get; set; } 
     public string Value { get; set; } 
    } 

    public class MyControl : UserControl 
    { 
     public List<MyItem> Items { get; set; } 
    } 

finestra di dialogo Proprietà mi permette di aggiungere e rimuovere questi elementi, ma non appena chiudo la finestra di dialogo i valori sono entrato sono persi.

Cosa mi manca? Grazie molto!

+0

a persistere le modifiche in fase di progettazione/modifiche nella finestra delle proprietà di un oggetto personalizzato, credo che sarà necessario implementare un TypeConverter, e penso che probabilmente si vuole ereditare da ExpandableObjectConverter a darti un migliore interfaccia utente nella finestra Proprietà. – BillW

risposta

2

È necessario ripristinare i Elementi così un auto getter/setter non vi aiuterà qui.

Prova

public class MyControl : UserControl 
{ 
    private List<MyItem> _items = new List<MyItem>(); 

    public List<MyItem> Items 
    { 
     get { return _items; } 
     set { _items = value; } 
    } 
} 
+2

Non è necessario creare una variabile privata per fare ciò. Può continuare a utilizzare l'acquisizione automatica della proprietà; notazione insiemistica, ma poi avrebbe avuto bisogno di inizializzare 'Articoli = new List ();' in un costruttore di default per l'UserControl – Nick

+1

V'è una risposta abbastanza "sospetto". È molto dubbio che questo avrebbe * qualsiasi * effetto * del tutto *. Nota per i lettori: YMMV - più del solito. –

Problemi correlati