Próbuję skopiować obiekt do schowka Windows i wyłączyć ponownie. Mój kod jest tak:Schowek Kopiowanie obiektów do iz
Kopiuj do schowka:
Clipboard.Clear();
DataObject newObject = new DataObject(prompts);
newObject.SetData(myString);
Clipboard.SetDataObject(newObject);
Gdzie prompts
jest List<Data.Sources.PromptResult>
kolekcja.
Kopiowanie wyłączone Schowek:
IDataObject dataObject = System.Windows.Forms.Clipboard.GetDataObject();
if (dataObject.GetDataPresent(typeof(List<Data.Sources.PromptResult>)))
{
Type type = typeof(List<Data.Sources.PromptResult>);
Object obj = dataObject.GetData(type);
return (List<Data.Sources.PromptResult>)dataObject.GetData(type);
}
GetFormats()
przedstawia format jako na liście i GetDataPresent(List<Data.Sources.PromptResult>)
powraca prawda, ale gdy próbuję uzyskać obiekt z klasy Clipboard
z GetData(List<Data.Sources.PromptResult>)
mogę dostać zwrot zero.
Czy ktoś ma pojęcie, co może być nie tak?
wpadłem na te same problemy, ale rozwiązał to inaczej. Jedyne, co musiałem zrobić, to upewnić się, że ** każda część mojego obiektu ** (podobiekty) była typu serializowalnego. Mniej kodu zdecydowanie. Wypróbuj metodę [IsSerializable] (http://www.codeproject.com/Articles/8102/Saving-and-obtaining-custom-objects-to-from-Window)! Jeśli twoja klasa nie nadaje się do serializacji, wyjątek opisuje problem całkiem nieźle. – Bitterblue