0

DataGridViewColumnHeaderCellがIClonableを実装しているとは思わないので、不要な参照を回避するためにXml.Serializationを使用してこのオブジェクトをコピーすることを考えていました。どう思いますか?やり過ぎ?

4

2 に答える 2

1

あなたはそれをする必要はありませんDataGridViewColumnHeaderCell、メソッドを実装しIClonable.Clone()ます。

object clonedObject = myDataGridViewColumnHeaderCell.Clone();

編集:

ただし、データはコピーされません。そして、ColumnIndexは読み取り専用プロパティであり、私が保存したい2つのプロパティの1つです。

誠意をこめて使用したことはありませんDataGridViewColumnHeaderCellが、動作するはずです。ただし、2つのプロパティを保持する必要がある場合は、カスタマイズしたCloneメソッドを作成できます。

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型であり、参照を渡さないため、新しいオブジェクトに割り当てる必要があります。

于 2012-11-09T15:08:03.633 に答える
0

これをテストしましたが、不明な理由でクローンがオブジェクトをコピーすることはありませんでした。各行のプロパティをコピーする必要がありました。

于 2012-12-24T06:03:07.187 に答える