【发布时间】:2012-06-14 08:18:18
【问题描述】:
我有一个 DoDragDrop,我在其中将数据设置为 Point。当我在一个实例中拖动时 - 一切正常。但是当我在程序的两个实例之间拖动时,Visual Studio 给了我这个错误:
指定的记录无法映射到托管值类。
为什么?
编辑:这是代码:
DataObject d = new DataObject();
d.SetData("ThePoint", MyPoint);
DragDropEffects e = DoDragDrop(d, DragDropEffects.Move);
还有:
Point e2 = (Point)e.Data.GetData("ThePoint");
【问题讨论】:
-
请提供更多代码。您在哪里以及如何访问 DataObject?
-
@dowhilefor 已添加到问题中。
-
我的猜测是您需要正确序列化该点。我不确定 Setdata 如何存储点,但我认为没有任何序列化只存储某种引用。所以尝试序列化点,存储它,然后在你的其他应用程序中反序列化它。可能有一个用于指向和指向字符串的 TypeConverter 应该可以正常工作。
-
@dowhilefor 听起来不错。如果 DragAndDrop 只存储一个引用——这就解释了为什么第二个实例无法访问该点本身。谢谢。
-
好吧,点是一个值类型,所以我不认为它是一个真正的参考,但究竟发生了什么,一些 C# 大师可能会解释得更好。
标签: c# winforms drag-and-drop