3

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

这是我的代码:

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

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

以及属性窗口的图像:

属性窗口的图像

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

4

1 回答 1

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;
  }
}

请参阅覆盖的 DataViewColumn 上的自定义属性不保存

于 2012-05-30T13:43:58.780 回答