当您在设计时修改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 }); }
表单设计者如何知道它应该调用每个列的构造函数,然后调用ListView的Columns属性的AddRange方法?我需要这样一个ListView像UserControl我在写.
解决方法
我想要实现的是定制由我的自定义组件生成的InitializeComponent代码.我发现这个MSDN文章描述如何做到这一点:
Customizing Code Generation in the .NET Framework Visual Designers
看来我需要为我的组件编写一个CodeDomSerializer
,并生成一个描述我的自定义初始化代码的CodeExpression
的集合.