C#DataGridView,来自列编辑器的自定义属性不会保存

问题描述:

我在表单中有一个datagridview。这个datagridview有一些列。有一些自定义列(我创建了自定义datagridview单元格)。这些自定义单元格具有一些属性,我希望在设计时通过datagridview的列编辑器进行设置,以便设置它们。所以在设计时,我打开了datagridview的列编辑器,然后创建了自定义datagridview单元格的一列。然后,我设置了一些自定义属性,并关闭了datagridview的olumns编辑器。当我打开datagridview的列编辑器时,以前为这些自定义属性设置的值不会反映出来,看起来好像它们在datagridview的列编辑器关闭后并未保存。所以为什么?为什么自定义属性的值未保存?我究竟做错了什么?C#DataGridView,来自列编辑器的自定义属性不会保存

此外,我不能留下这些自定义属性为空,因为我引发的异常一旦形式被加载(对象引用未设置为对象的实例)。

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

我遇到了这个相同的问题。搜索后,我在微软网站上发现了一些反馈,说我必须在我的datagridviewtextboxcolumn派生中实施iCloneable

您可以在文章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; 
    }