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