When you modify column headers of a ListView at design time, the designer generates code to serialize column headers at run-time:
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
});
}
How does the forms-designer know that it should call the constructor for each column followed by a call to the AddRange method of the Columns property of the ListView? I need this for a ListView like UserControl I am writing.
What I wanted to achieve was to customize the InitializeComponent
code produced by my custom component. I found this MSDN article which describes how to do that:
Customizing Code Generation in the .NET Framework Visual Designers
It appears that I need to write a CodeDomSerializer
for my component, and generate a collection of CodeExpression
's describing my custom initialization code.