How to provide custom code for InitializeComponent?
c#, designer, initializecomponent, user-controls, winforms
Solution
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.
Problem
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.