C# ';系统。无效卡斯特例外';将对象从一个应用程序拖放到另一个应用程序时(应用程序的两个实例)

C# ';系统。无效卡斯特例外';将对象从一个应用程序拖放到另一个应用程序时(应用程序的两个实例),c#,.net,C#,.net,我将要从一个应用程序(客户端实例A)向另一个应用程序(客户端实例B)拖动一个对象(带数据的拖动窗体) 在应用程序内部拖放操作效果良好 这是我的密码: 拖动: var dragForms=新列表(dragformsource); myPanel.DoDragDrop(dragForms,DragDropEffects.Move | DragDropEffects.Scroll); 删除: if(myDragEventArgs.Data.GetDataPresent(typeof(List)) {

我将要从一个应用程序(客户端实例A)向另一个应用程序(客户端实例B)拖动一个对象(带数据的拖动窗体)

在应用程序内部拖放操作效果良好

这是我的密码:

拖动:

var dragForms=新列表(dragformsource);
myPanel.DoDragDrop(dragForms,DragDropEffects.Move | DragDropEffects.Scroll);
删除:

if(myDragEventArgs.Data.GetDataPresent(typeof(List))
{
Drop(myDragEventArgs.数据);
}
但当我尝试拖放到另一个客户端实例时,我得到了:
System.InvalidCastException
检查
GetDataPresent()

这是因为
myDragEventArgs.Data
现在是“COM对象”类型

我怎样才能做到这一点


谢谢!

看看。你必须使用
[Serializable]
我仍然尝试过,但它不起作用。原因是DragForm使用System.Windows.Forms.Form,它不可序列化。我刚刚从“列表”更改了DragEventArgs数据
var dragForms = new List<DragForm<DragFormData>>(dragFormsSource);
myPanel.DoDragDrop(dragForms, DragDropEffects.Move | DragDropEffects.Scroll);
if(myDragEventArgs.Data.GetDataPresent(typeof(List<DragForm<DragFormData>>))
{
    Drop(myDragEventArgs.Data); 
}