在WinForms拖放中的data . getdata类型转换问题
本文关键字:getdata 类型转换 问题 data WinForms 拖放 | 更新日期: 2023-09-27 18:06:02
我试图在我的程序的2个实例之间进行拖放,但是当我试图将数据转换为我的类型时,它会抛出一个无效的cast异常。
代码如下:
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]);
}
最奇怪的是控制台。WriteLine在输出上写入"Entity[]",但是当我尝试强制转换时抛出异常。有人能帮我一下吗?提前感谢!
要将对象从应用程序的一个实例拖放到另一个实例中,对象必须是可序列化的。否则,强制转换将不能按预期工作。
要做到这一点,您可以将[Serializable]
属性添加到您的Entity类,并可选地实现ISerializable
接口。有关如何使类可序列化的介绍,请参见:http://msdn.microsoft.com/en-us/library/4abbf6k0(v=VS.90).aspx
使用剪贴板也是同样的问题。在这个CodeProject站点上可以看到一个很好的例子:
http://www.codeproject.com/KB/cs/copycustomclasstoclipbrd.aspx