13

当您在设计时修改 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,我需要这个。

4

2 回答 2

6

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

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

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

于 2009-10-16T14:14:49.263 回答
3

您可以使用特殊属性来告诉 Visual Studio 设计器如何序列化代码中的属性。有关示例 ,请参阅DesignerSerializationVisibilityAttribute的 MSDN 参考。本系列文章还很好地概述了可用于扩展对自定义控件的设计时支持的各种属性。希望这可以帮助。

于 2009-10-14T21:06:36.733 回答