在属性窗口中更改后,自定义属性将不会保存

时间:2012-05-30 13:06:12

标签: c# datagridviewcolumn

我为DataGridView创建了一个自定义列,原因是我想在列中添加属性(类型)。 我右键单击DataGridView并选择“编辑列...”。然后,当我选择我自定义列类型的列时,我可以编辑属性,但是如果我在编辑后单击“确定”,然后再次转到“编辑列...”,我分配给我的属性的值走了。

这是我的代码:

public class CustomColumn : DataGridViewColumn
{
    [DisplayName("Type")]
    [Category("Custom Property")]
    public String type { get; set; }

    public CustomColumn()
        : base(new DataGridViewTextBoxCell())
    {
    }
}

属性窗口的图像:

Image of the propert windows http://s8.postimage.org/fzrke75gl/Capture.png

有人可以告诉我我做错了什么,或者我需要添加什么,这样当我更改属性窗口中的值时,该值是否已分配给属性?

1 个答案:

答案 0 :(得分:8)

我认为您需要覆盖Clone()方法才能使其正常工作:

public class CustomColumn : DataGridViewColumn {

  public CustomColumn()
    : base(new DataGridViewTextBoxCell()) {
  }

  [DisplayName("Type")]
  [Category("Custom Property")]
  public String type { get; set; }

  public override object Clone() {
    CustomColumn copy = base.Clone() as CustomColumn;
    copy.type = type;
    return copy;
  }
}

请参阅Custom properties on overridden DataViewColumn do not save