在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[]",但是当我尝试强制转换时抛出异常。有人能帮我一下吗?提前感谢!

在WinForms拖放中的data . getdata类型转换问题

要将对象从应用程序的一个实例拖放到另一个实例中,对象必须是可序列化的。否则,强制转换将不能按预期工作。

要做到这一点,您可以将[Serializable]属性添加到您的Entity类,并可选地实现ISerializable接口。有关如何使类可序列化的介绍,请参见:http://msdn.microsoft.com/en-us/library/4abbf6k0(v=VS.90).aspx

使用剪贴板也是同样的问题。在这个CodeProject站点上可以看到一个很好的例子:

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