【发布时间】:2011-01-07 13:14:54
【问题描述】:
This question 与我感兴趣的内容接近,但并不完全。
我有一个用 C# 编写的 .NET WinForms 应用程序。我有一个ListView 控件,它显示一个 C# 对象数组。我已经将它连接起来,以便您可以将这些列表视图项拖放到同一应用程序中的不同表单,并且它会正确地将对象数组(类型 Session)传递给该其他表单的放置处理程序。
但是,我现在想在运行多个应用程序实例的地方支持跨进程拖放。这显示它会起作用(例如GetDataPresent 成功),但当我实际尝试检索数据时最终会引发异常——无法将object[] 转换为Session[]。
if (e.Data.GetDataPresent("Fiddler.Session[]"))
{
Session[] oDroppedSessions;
try
{
oDroppedSessions = (Session[])e.Data.GetData("Fiddler.Session[]");
}
catch (Exception eX)
{ // reaches here
}
}
任何人都知道我是否必须为我的对象实现ISerializable 以使其工作?通常情况下,我会简单地尝试一下,但是为这个类实现ISerializable 将非常重要,而且我担心这样做可能会产生奇怪的副作用。
更新:实现ISerializable 无济于事——该方法永远不会被调用。同样,将Serializable 属性添加到类中完全没有影响。还有其他想法吗?
【问题讨论】:
-
添加一行'Console.WriteLine(string.Format("异常捕获。详细信息是{0}", eX.ToString()));'在 catch 块中。消息是什么?
-
"无法将 object[] 转换为 Session[]"
标签: c# winforms drag-and-drop iserializable