2009-01-25 23 views
7

Estoy construyendo un control de usuario. Actualmente consiste en un cuadro de texto y un botón, como una experiencia de aprendizaje. Esto se usará como base para un control más útil.DataSource para control de usuario

Quiero agregar un DataSource, un miembro de pantalla y un ValueMember.
Aquí está mi código para la fuente de datos. Se mostrará en el editor de Propiedades, pero está desactivado y atenuado. ¿Qué me estoy perdiendo?

private object MyDataSource; 

    [Browsable(true)] 
    [TypeConverter("System.Windows.Forms.Design.DataSourceConverter")] 
    [System.ComponentModel.Bindable(true)] 
    public object DataSource 
    { 
     get 
     { 
      return MyDataSource; 
     } 
     set 
     { 
      if (MyDataSource != value) 
       MyDataSource = value; 
     } 
    } 

Respuesta

5

Una opción más sencilla puede ser la de utilizar un proveedor de atributos en su lugar:

[AttributeProvider(typeof(IListSource))] 

Usted podría tratar de usar el nombre de ensamblado cualificado? y especificando el editor?

[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] 
[Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing.Design.UITypeEditor, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")] 

En realidad, se puede abreviar que esto es independiente de la versión simplemente especificando el montaje:

[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design")] 
[Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design", typeof(UITypeEditor))] 
Cuestiones relacionadas