私はクラスの動物を持ち、このクラスのリストを作成しました。C#オブジェクトのリストからオブジェクトをコピーし、リスト内の別の場所に貼り付けます。
List<Animal> animalLibrary = new List<Animal>();
このリストからオブジェクトをコピーして貼り付け、リスト内の別の場所に配置します。ですから、私は例えばanimalLibrary [c]のコピーを作成し、このオブジェクトをanimalLibrary []内の別の場所に貼り付けたいと思うでしょう。
これをコピーに使用すると、動作するようです。
Clipboard.SetDataObject(animalLibrary[c]);
これを使用して貼り付けますが、代わりにmsgboxが表示されます。
IDataObject iData = Clipboard.GetDataObject();
if (iData.GetDataPresent(DataFormats.Serializable))
{
animalLibrary.Insert(c, (Animal)iData.GetData("Animal"));
}
else
{
MessageBox.Show("Could not paste the data");
}
Get_Data();
Load_Data();
強制的に挿入すると、NullReferenceExceptionからデータを表示します。
編集: mammaraのアドバイスを受け、Animalクラスのコピーを作成し、animalLibrary.Insert(index + 1、a)を使用して貼り付けました。 'a'は動物のコピーです。
Clipboardクラスは、実際の_System ClipBoard_を表します。コード内のオブジェクトをコピーすることとは関係ありません。あなたの場合、単に新しいAnimalオブジェクトを作成し、そのオブジェクトをあなたのリストに追加することができます。あるいは、Animalが 'Clone()'メソッドを使ってオブジェクトのコピーを作成するための 'ICloneable'インタフェースを実装するようにすることもできます。 – mammago
デバッガで実行することをお勧めします。 –
ここでクリップボードを使用する理由はわかりませんが、オブジェクトをcbに配置するには、シリアル化が必要です。 –