2010-03-02 17 views
5

He creado un control de usuario en una Aplicación Windows C# 3.5 y tiene varias propiedades (cadena, int, color, etc.). Estos se pueden modificar en la ventana de propiedades y los valores se conservan sin problemas..NET Aplicación WinForm que no persiste en una propiedad del tipo Lista <MyClass>

Sin embargo he creado una propiedad como

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

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

El diálogo de propiedades me permite añadir y eliminar estos artículos, pero tan pronto como cerrar el diálogo de los valores introducidos se me perdió.

¿Qué me estoy perdiendo? ¡Muchas gracias!

+0

a persistir ediciones de tiempo de diseño/cambios en la ventana de propiedades de un objeto personalizado, creo que tendrá que implementar un TypeConverter, y creo que es probable que desee heredar de ExpandableObjectConverter a darle una mejor interfaz de usuario en la ventana Propiedades. – BillW

Respuesta

2

Debe inicializar los Elementos para que un auto getter/setter no lo ayude aquí.

Trate

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

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

No es necesario crear una variable privada para hacerlo. Él puede continuar usando get auto-property; establecer notación, pero luego tendría que inicializar 'Items = new List ();' en un constructor predeterminado para el UserControl – Nick

+1

Hay una respuesta bastante "sospechosa". Es muy dudoso que esto tenga * cualquier * efecto * en absoluto *. Nota para los lectores: YMMV: más de lo habitual. –

Cuestiones relacionadas