3

当我从该方法DataObject.GetData(typeof(ItemType))的子类的实例调用此方法时,ItemType返回 null...如何从子类型中获取数据?谢谢

4

1 回答 1

7

DataObject 处理不处理类层次结构——它是从给定数据类型的全名派生的直接字符串“类型”,因此它没有上下文来为其提供子类的知识。我刚刚遇到了在树视图中实现拖放的完全相同的问题。

我有两个选项(这些可能是特定于拖放的 - 如果这不是你的问题,它可能没有很多用处) - 都依赖于更改数据对象的来源(同样,如果你没有访问它,它可能没有多大用处)。

  1. 创建一个接受ItemType实例的包装器类,并在调用DoDragDrop时传递该包装器而不是实际实例。另一方面,DataObject.GetData(typeof(WrapperClass))改为测试。

  2. 同样,在设置数据对象的地方,自己设置一个 DataObject 实例 - 例如。称呼

    ctl.DoDragDrop(new DataObject(typeof(ItemType).FullName, itemTypeInstance),
        DragDropEffects.Move|DragDropEffects.Copy)
    

    然后你可以DataObject.GetData(typeof(ItemType))在另一边使用。

于 2012-02-21T20:14:47.830 回答