【发布时间】:2009-05-22 10:05:43
【问题描述】:
我试图让我的用户将某些数据行从一个自定义列表控件拖放到另一个,其中第二个列表控件位于同一应用程序的另一个实例中。
DoDragDrop(parameterTypedListView.SelectedObjects, DragDropEffects.Copy);
其中parameterTypedListView.SelectedObjects 是一个通用 IList,其中 T 是一个自定义类,仅包含值类型作为字段/属性。
在 OnDragDrop 事件中,我尝试提取这些数据,但只得到一个 System.__ComObject ... 似乎继承自 System.MarshalByRefObject 的对象。
简而言之:如何以我可以实际使用的面向对象格式提取数据?
编辑:将我的自定义类设置为可序列化没有任何明显的效果。我可以枚举__ComObject:
foreach (var dataObject in (IEnumerable) e.Data.GetData("System.Collections.ArrayList"))
{
// this actually enumerates the correct number of times, i.e. as many times as there are items in the list.
}
但每个 dataObject 本身都是一个 System.__ComObject,我无法将其转换为任何有用的东西。
【问题讨论】:
-
我们说的是同一个程序在 2 个不同的实例中运行两次?
-
@Konstantinos,是的,同一应用程序的多个实例。
标签: c# winforms .net-3.5 drag-and-drop