This question gần với những gì tôi quan tâm, nhưng không hoàn toàn.Kéo và thả loại đối tượng tùy chỉnh trong WinForms C#
Tôi có ứng dụng .NET WinForms được viết bằng C#. Tôi có một điều khiển ListView
hiển thị một mảng các đối tượng C#. Tôi đã nối nó lên để bạn có thể kéo/thả các mục listview này vào một biểu mẫu khác trong cùng một ứng dụng, và nó chuyển đúng mảng các đối tượng (loại Session
) đến trình xử lý thả cho biểu mẫu kia.
Tuy nhiên, bây giờ tôi muốn hỗ trợ kéo/thả qua nhiều nơi tôi chạy nhiều phiên bản ứng dụng của mình. Điều này xuất hiện rằng nó sẽ hoạt động (ví dụ: GetDataPresent
thành công), nhưng cuối cùng ném một ngoại lệ khi tôi thực sự cố gắng truy xuất dữ liệu-- không thể đúc object[]
đến Session[]
.
if (e.Data.GetDataPresent("Fiddler.Session[]"))
{
Session[] oDroppedSessions;
try
{
oDroppedSessions = (Session[])e.Data.GetData("Fiddler.Session[]");
}
catch (Exception eX)
{ // reaches here
}
}
Bất cứ ai cũng biết nếu tôi phải thực hiện ISerializable
cho các đối tượng của tôi để làm cho công việc này? Thông thường, tôi chỉ đơn giản là thử nó, nhưng thực hiện ISerializable
cho lớp này sẽ là khá tầm thường, và tôi lo lắng rằng có thể có những tác dụng phụ lạ khi làm như vậy.
CẬP NHẬT: Thực hiện ISerializable
không help-- phương pháp này là không bao giờ gọi. Tương tự, việc thêm thuộc tính Serializable
vào lớp không có tác động gì cả. Bất kỳ ý tưởng nào khác?
Thêm dòng 'Console.WriteLine (string.Format ("Ngoại lệ bị bắt. Chi tiết là {0}", eX.ToString()));' trong khối đánh bắt. Tin nhắn sẽ là gì? – t0mm13b
"không thể truyền đối tượng [] đến Phiên []" – EricLaw