我不认为DataGridViewColumn HeaderCell实现了ICloneable,所以我想使用Xml.Serialization来复制这个对象以避免不必要的引用。你怎么看?矫枉过正?
答案 0 :(得分:1)
你没有这样做,DataGridViewColumnHeaderCell
实现了IClonable.Clone()
方法。
object clonedObject = myDataGridViewColumnHeaderCell.Clone();
修改强>
但它不会复制数据。而ColumnIndex是一个只读属性 这是我有兴趣保留的两个属性之一。
我从未在DataGridViewColumnHeaderCell
上使用它,但它应该有用。
Howerever如果您只需要保留两个属性,则可以创建自定义克隆方法:
public static class Utilities{
public static object CloneObject(this DataGridViewColumnHeaderCell myObj){
DataGridViewColumnHeaderCell clonedObject = new DataGridViewColumnHeaderCell();
//here clone your properties
clonedObject.ColumnIndex = myObj.ColumnIndex;
return clonedObject;
}
}
然后:
object clonedObject = myDataGridViewColumnHeaderCell.CloneObject();
PS:在ColumnIndex
的情况下,您只需要将它分配给新对象,因为它的类型为int,它是一个结构,并且您不传递引用。< / p>
答案 1 :(得分:0)
我测试了这个,克隆从未复制过对象,原因不明。我不得不复制每一行的属性。