如何为InitializeComponent提供自定义代码?

Ozg*_*tak 11 c# user-controls initializecomponent designer winforms

在设计时修改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
    });
}
Run Code Online (Sandbox Code Playgroud)

表单设计者如何知道它应该为每个列调用构造函数,然后调用ListView的Columns属性的AddRange方法?我需要这个像我正在写的UserControl ListView.

Ozg*_*tak 6

我想要实现的是自定义InitializeComponent我的自定义组件生成的代码.我发现这篇MSDN文章介绍了如何做到这一点:

在.NET Framework视觉设计器中自定义代码生成

看来我需要CodeDomSerializer为我的组件编写一个,并生成一个CodeExpression描述我的自定义初始化代码的集合.