如何在设计器中使对象的变量名称可编辑?

时间:2009-10-26 14:13:23

标签: c# .net visual-studio winforms designer

我编写了一个模仿表头外观的自定义控件。它绘制的列由具有Text字符串属性和Width int属性的对象集合给出。两者都添加了BrowsableCategoryDefaultValueDescription属性。在设计器中,该集合是可编辑的,用户可以像设置控件一样设置文本和宽度,并且我希望这些属性得到尊重。但是,用户无法编辑变量的名称;生成的代码如下所示:

HeaderMimicColumn headerMimicColumn1 = new HeaderMimicColumn();
HeaderMimicColumn headerMimicColumn2 = new HeaderMimicColumn();
HeaderMimicColumn headerMimicColumn3 = new HeaderMimicColumn();
...

是否可以使用户可以在设计器中指定用于列的变量的名称?如果是这样,怎么样?

编辑:为了清楚起见,HeaderMimicColumn并非来自System.Windows.Forms.Control,它只是一个包含这两个属性的普通类,以及一对在更改时触发的事件。

我应该解释一下,该集合的DesignerSerializationVisibility设置为Contents

2 个答案:

答案 0 :(得分:2)

当非组件对象是通过DesignerSerializationVisibility.Contents机制持久化的集合的一部分时,该集合中的每个对象都没有单独的标识。它只是父集合的一部分。因此,您无法设置其名称,因为它们实际上并不作为单独的对象存在。

如果您希望HeaderMimicColumn成为您的集合的一部分并且可单独寻址(例如ListView中的列),您至少必须从System.ComponentModel.Component.派生它们然后处理其他问题这会带来:)。

答案 1 :(得分:0)

用户应该已经可以通过执行以下操作来执行此操作

  1. 在设计器中点击F4(打开属性窗口)
  2. 在组合框下拉列表中选择headerMimicColumn1
  3. 更改名称字段