Как предоставить собственный код для InitializeComponent?

Когда вы изменяете заголовки столбцов ListView во время разработки, конструктор генерирует код для сериализации заголовков столбцов во время выполнения:

private void InitializeComponent()
{
    this.listView1 = new System.Windows.Forms.ListView();
    this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
    this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
    this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
        this.columnHeader1,
        this.columnHeader2
    });
}

Как дизайнер форм узнает, что он должен вызывать конструктор для каждого столбца, за которым следует вызов метода AddRange свойства Columns в ListView? Мне это нужно для ListView, такого как UserControl, который я пишу.


person Ozgur Ozcitak    schedule 14.10.2009    source источник


Ответы (2)


Чего я хотел добиться, так это настроить код InitializeComponent, созданный моим пользовательским компонентом. Я нашел эту статью MSDN, в которой описывается, как это сделать:

Настройка генерации кода в визуальных дизайнерах .NET Framework

Похоже, мне нужно написать CodeDomSerializer для моего компонента и создать коллекцию CodeExpression описывает мой собственный код инициализации.

person Ozgur Ozcitak    schedule 16.10.2009

Вы можете использовать специальные атрибуты, чтобы указать разработчику Visual Studio, как сериализовать свойства в коде. См. ссылку MSDN для DesignerSerializationVisibilityAttribute в качестве примера. В этой серии статей также дается хороший обзор различных атрибутов, доступных для расширения поддержки пользовательских элементов управления во время разработки. Надеюсь это поможет.

person tbreffni    schedule 14.10.2009
comment
Спасибо, что нашли время ответить, мне нужно больше, чем может предоставить автоматическая сериализация. Сегодня я нашел статью MSDN, описанную в моем посте ниже. - person Ozgur Ozcitak; 16.10.2009