C#DataGridView,列编辑器中的自定义属性未保存

时间:2012-08-16 16:56:32

标签: c# properties datagridview custom-attributes

我的表单中有一个datagridview。此datagridview包含一些列。有一些自定义列(我已经创建了自定义datagridview单元格)。这些自定义单元格在设计时可以从datagridview的列编辑器中看到一些属性,以便设置它们。所以在设计时,我打开datagridview的列编辑器,然后创建一个自定义datagridview单元格的列。然后,我设置了一些自定义属性,并关闭了datagridview的olumns编辑器。当我打开datagridview的列编辑器时,我之前为这些自定义属性设置的值没有反映出来,似乎一旦datagridview的列编辑器关闭它们就不会保存。所以为什么?为什么不保存自定义属性的值?我做错了什么?

此外,我不能将这些自定义属性保留为空,因为加载了一次表单后引发的异常(对象引用未设置为对象的实例)。

如果有人能帮助我,我非常感激。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。搜索之后,我在微软网站上发现了一些反馈,说我必须在iCloneable推导中实现datagridviewtextboxcolumn

您可以找到文章here和相关部分:

  

在极少数情况下,列类型可能希望公开该属性   在单元级别没有等效属性。这方面的例子是   DataGridViewLinkColumn.Text和DataGridViewImageColumn.Image。在   在这些情况下,列类需要覆盖Clone方法   复制该财产。

我的专栏添加了四个额外的属性,这是我的icloneable函数:

      //Override this method to set the custom properties.
  public override object Clone()
  {
     var col = base.Clone() as BauerDataGridViewTextBoxColumn;
     col.ShowBorder = this.ShowBorder;
     col.BorderColor = this.BorderColor;
     col.ColumnChooserIsOptional = this.ColumnChooserIsOptional;
     col.ColumnChooserColumnLabel = this.ColumnChooserColumnLabel;
     return col;
  }
相关问题