2009-01-25 48 views
7

我正在构建用户控件。目前它由一个文本框和一个按钮组成 - 作为学习体验。这将被用作更有用的控制的基础。用于用户控制的数据源

我想添加一个DataSource,显示成员和ValueMember。
这是我的数据源代码。它将显示在属性编辑器中,但被禁用并变灰。我错过了什么?

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

回答

5

更容易的选择可能是使用一个属性提供商,而不是:

[AttributeProvider(typeof(IListSource))] 

你可以尝试使用该程序集限定的名字吗?并指定编辑器?

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

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

其实,你可以通过指定装配缩写这是版本无关