2009-10-14 2 views
10

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

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, который я пишу.

ответ

4

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

Customizing Code Generation in the .NET Framework Visual Designers

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

2

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

+0

Спасибо, что нашли время ответить, мне нужно больше, чем может обеспечить автоматическая сериализация. Я нашел статью MSDN, описанную сегодня в моем сообщении ниже. –

Смежные вопросы