Поддержка Winforms Designer для выбора типов и элементов управления - PullRequest
0 голосов
/ 04 февраля 2010

У меня есть подкласс BindingSource, который немного расширяет его для наших особых нужд, и я хотел бы поддержать его для дизайнера VS2008.

У меня есть три свойства, которые я хотел бы получитьподдержка конструктора, для двух из них должны быть установлены другие Control s в форме, для одного должно быть установлено значение Type.

Отображение их в ден Designer, а также установка значения по умолчанию nullбыло довольно легко, но как мне добиться, чтобы VS выбрал доступные элементы управления (в идеале только желаемого типа) и или Type s?

Вот код для свойств на данный момент, любая подсказка приветствуется,поскольку я ничего не знаю о поддержке VS-Designer.

public class BindingSourceEx
    : BindingSource
{
    [DisplayName("DataSourceType")]
    [Description("Sets the type to bind to.")]
    public Type DataSourceType
    {
        get;
        set;
    }

    [DisplayName("BindingNavigator")]
    [DefaultValue(null)]
    [Description("Sets the BindingNavigatorQ1 to use.")]
    public BindingNavigatorEx BindingNavigator
    {
        get;
        set;
    }

    [DisplayName("DataGridView")]
    [DefaultValue(null)]
    [Description("Sets the DataGridViewQ1 to use.")]
    public DataGridViewEx DataGridView
    {
        get;
        set;
    }
}

1 Ответ

1 голос
/ 04 февраля 2010

Стандартная реализация конструктора уже заботится о свойствах BindingNavigator и DataGridView. Сетка свойств использует поле со списком, чтобы позволить вам выбрать элемент управления, который соответствует типу элемента управления. Например, вам нужно удалить, например, элемент управления BindingNavigatorQ1 в форме, чтобы получить в поле со списком что-либо, кроме None.

Свойство Type более сложное, вам понадобится как минимум TypeConverter для преобразования между значением Type и строкой. Не уверен, что это должно быть проектируемое свойство, тип, который вы хотите связать, конечно же, еще не существует во время разработки, только во время выполнения, когда все сборки компилируются.

...