Tôi đang cố sao chép một đối tượng vào khay nhớ tạm của cửa sổ và tắt một lần nữa. Mã của tôi là như thế này:Clipboard Sao chép các đối tượng đến và đi từ
Sao chép vào clipboard:
Clipboard.Clear();
DataObject newObject = new DataObject(prompts);
newObject.SetData(myString);
Clipboard.SetDataObject(newObject);
đâu prompts
là một bộ sưu tập List<Data.Sources.PromptResult>
.
Sao chép tắt clipboard:
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);
}
Các GetFormats()
cho thấy định dạng như là trong danh sách và các GetDataPresent(List<Data.Sources.PromptResult>)
trả về true nhưng nếu tôi cố gắng để có được những đối tượng ra khỏi lớp Clipboard
với GetData(List<Data.Sources.PromptResult>)
tôi nhận được sự trở lại của vô giá trị.
Có ai có bất kỳ ý tưởng nào có thể sai không?
Tôi chạy vào những vấn đề tương tự, nhưng tôi giải quyết nó một cách khác. Tất cả những gì tôi phải làm là đảm bảo ** mọi phần của đối tượng của tôi ** (subobjects) là một kiểu có thể tuần tự hóa. Ít mã hơn. Hãy thử phương pháp [IsSerializable] (http://www.codeproject.com/Articles/8102/Saving-and-obtaining-custom-objects-to-from-Window)! Nếu lớp của bạn không phải là serializable ngoại lệ mô tả vấn đề khá tốt. – Bitterblue