Источник данных для контроля пользователя - PullRequest
8 голосов
/ 26 января 2009

Я создаю пользовательский элемент управления. В настоящее время он состоит из текстового поля и кнопки - в качестве учебного процесса. Это будет использоваться в качестве основы для более полезного контроля.

Я хочу добавить источник данных, элемент отображения и 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;
        }
    }

Ответы [ 2 ]

5 голосов
/ 26 января 2009

Более простой вариант может заключаться в использовании поставщика атрибутов:

[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))]
1 голос
/ 16 марта 2018

Я добавил атрибут ComplexBindingProperties в свой класс Control и добавил AttributeProvider в свое свойство DataSource

[ComplexBindingProperties("DataSource", "DataMember")]
public partial class SomeListControl : UserControl

...

[Category("Data")]
[Description("Indicates the source of data for the control.")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
    get { return _ultraGrid.DataSource; }
    set { _ultraGrid.DataSource = value; }
}

[Category("Data")]
[Description("Indicates a sub-list of the data source to show in the control.")]
[Editor("System.Windows.Forms.Design.DataMemberListEditor, System.Design", typeof(UITypeEditor))]    
public string DataMember
{
    get
    {
        return _ultraGrid.DataMember;
    }

    set
    {
        _ultraGrid.DataMember = value;
    }
}

Ссылка: Применить атрибуты в элементах управления Windows Forms

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...