复制DataGridViewColumnHeaderCell obj

时间:2012-11-09 15:01:26

标签: c# winforms ado.net

我不认为DataGridViewColumn HeaderCell实现了ICloneable,所以我想使用Xml.Serialization来复制这个对象以避免不必要的引用。你怎么看?矫枉过正?

2 个答案:

答案 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)

我测试了这个,克隆从未复制过对象,原因不明。我不得不复制每一行的属性。