我编写了一个模仿表头外观的自定义控件。它绘制的列由具有Text字符串属性和Width int属性的对象集合给出。两者都添加了Browsable
,Category
,DefaultValue
和Description
属性。在设计器中,该集合是可编辑的,用户可以像设置控件一样设置文本和宽度,并且我希望这些属性得到尊重。但是,用户无法编辑变量的名称;生成的代码如下所示:
HeaderMimicColumn headerMimicColumn1 = new HeaderMimicColumn();
HeaderMimicColumn headerMimicColumn2 = new HeaderMimicColumn();
HeaderMimicColumn headerMimicColumn3 = new HeaderMimicColumn();
...
是否可以使用户可以在设计器中指定用于列的变量的名称?如果是这样,怎么样?
编辑:为了清楚起见,HeaderMimicColumn
并非来自System.Windows.Forms.Control
,它只是一个包含这两个属性的普通类,以及一对在更改时触发的事件。
我应该解释一下,该集合的DesignerSerializationVisibility
设置为Contents
。
答案 0 :(得分:2)
当非组件对象是通过DesignerSerializationVisibility.Contents
机制持久化的集合的一部分时,该集合中的每个对象都没有单独的标识。它只是父集合的一部分。因此,您无法设置其名称,因为它们实际上并不作为单独的对象存在。
如果您希望HeaderMimicColumn
成为您的集合的一部分并且可单独寻址(例如ListView中的列),您至少必须从System.ComponentModel.Component.
派生它们然后处理其他问题这会带来:)。
答案 1 :(得分:0)
用户应该已经可以通过执行以下操作来执行此操作