2009-01-25 12 views
7

Ich baue ein Benutzersteuerelement. Derzeit besteht es aus einer Textbox und einer Schaltfläche - als Lernerfahrung. Dies wird als Grundlage für eine nützlichere Kontrolle verwendet.DataSource für Benutzersteuerung

Ich möchte eine DataSource, Anzeigeelement und ValueMember hinzufügen.
Hier ist mein Code für die Datenquelle. Es wird im Eigenschafteneditor angezeigt, ist jedoch deaktiviert und abgeblendet. Was vermisse ich?

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; 
     } 
    } 

Antwort

5

Eine einfachere Option stattdessen ein Attribut Provider verwenden können sein:

[AttributeProvider(typeof(IListSource))] 

Sie könnten versuchen, die Assembly qualifizierten Namen verwenden? und den Editor angeben?

[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")] 

Eigentlich kann man abkürzen dies nur versions unabhängig zu sein, indem die Anordnung festgelegt wird:

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