10

ユーザーコントロールを構築しています。現在、学習体験として、テキストボックスとボタンで構成されています。これは、より有用な制御の基礎として使用されます。

DataSource、display member、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;
        }
    }
4

2 に答える 2

6

より簡単なオプションは、代わりに属性プロバイダーを使用することです。

[AttributeProvider(typeof(IListSource))]

アセンブリ修飾名を使用してみてください。エディターを指定しますか?

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

実際には、アセンブリを指定するだけで、これをバージョンに依存しないように省略できます。

[TypeConverter("System.Windows.Forms.Design.DataSourceConverter, System.Design")]
[Editor("System.Windows.Forms.Design.DataSourceListEditor, System.Design", typeof(UITypeEditor))]
于 2009-01-25T22:51:24.207 に答える