在设计时修改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方法?我需要这个像我正在写的UserControl这样的ListView。
答案 0 :(得分:6)
我想要实现的是自定义我的自定义组件生成的InitializeComponent
代码。我发现这篇MSDN文章描述了如何做到这一点:
Customizing Code Generation in the .NET Framework Visual Designers
似乎我需要为我的组件编写CodeDomSerializer
,并生成一个CodeExpression
的集合来描述我的自定义初始化代码。
答案 1 :(得分:2)
您可以使用特殊属性告诉Visual Studio设计器如何在代码中序列化属性。有关示例,请参阅DesignerSerializationVisibilityAttribute的MSDN参考。 This series of articles还概述了可用于扩展自定义控件的设计时支持的各种属性。希望这会有所帮助。