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

Gun*_*rsi 3 c# datagridviewcolumn

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

这是我的代码:

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

    public CustomColumn()
        : base(new DataGridViewTextBoxCell())
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

和属性窗口的图像:

属性窗口的图像http://s8.postimage.org/fzrke75gl/Capture.png

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

Lar*_*ech 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;
  }
}
Run Code Online (Sandbox Code Playgroud)

请参阅重写的DataViewColumn上的自定义属性不保存

  • 奇迹般有效.更快地发现这一点将为我节省更多的时间. (2认同)