Как предоставить настраиваемый код для 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, который я пишу.
Ответы
Ответ 1
То, что я хотел достичь, - это настроить код InitializeComponent
, созданный моим настраиваемым компонентом. Я нашел эту статью MSDN, которая описывает, как это сделать:
Настройка генерации кода в Visual Designers.NET Framework
Похоже, мне нужно написать CodeDomSerializer
для моего компонента и создать коллекцию CodeExpression
, описывающий мой пользовательский код инициализации.
Ответ 2
Вы можете использовать специальные атрибуты, чтобы сообщить дизайнеру Visual Studio, как сериализовать свойства в коде. См. Ссылку MSDN для DesignerSerializationVisibilityAttribute для примера. Эта серия статей также дает хороший обзор различных атрибутов, доступных для продления времени разработки для пользовательских элементов управления. Надеюсь, это поможет.