WinForms中的e.Data.GetData转换问题拖放

我试图在我的程序的两个实例之间进行拖放,但是当我尝试将数据转换为我的类型时,它会抛出一个无效的转换exception。

这是代码:

protected virtual void GetDropIEntities(DragEventArgs e) { foreach (string s in e.Data.GetFormats()) Console.WriteLine(s); Entity[] myDroppedEnts = (Entity[])e.Data.GetData(e.Data.GetFormats()[0]); } 

最奇怪的是,Console.WriteLine在输出中写入“Entity []”,但是当我尝试强制转换exception时抛出。 有人可以帮我一把吗? Thx提前!

要将对象从应用程序的一个实例拖放到另一个实例,该对象必须是可序列化的 。 否则,演员阵容将无法按预期工作。

为此,您可以将[Serializable]属性添加到Entity类,并可选择实现ISerializable接口。 有关如何创建Serializable类的介绍,请参阅: http : //msdn.microsoft.com/en-us/library/4abbf6k0(v = VS.90).aspx

这与使用剪贴板时的问题相同。 在CodeProject网站上可以看到一个很好的例子:

http://www.codeproject.com/KB/cs/copycustomclasstoclipbrd.aspx