DataObject.GetDatapresent с подклассом - PullRequest
3 голосов
/ 21 февраля 2012

Когда я вызываю этот метод DataObject.GetData(typeof(ItemType)) из экземпляра подкласса ItemType, метод возвращает ноль ... Как я могу получить данные из подтипа?Спасибо

1 Ответ

7 голосов
/ 22 февраля 2012

Обработка DataObject не имеет отношения к иерархиям классов - это прямой тип 'string', полученный из полного имени данного типа данных, поэтому у него нет контекста, который предоставил бы ему знание подклассов. Я только что столкнулся с точно такой же проблемой, реализуя перетаскивание в виде дерева.

У меня было два варианта (это, возможно, перетаскивание и привязка - если это не ваша проблема, это может быть не очень полезно) - оба полагаются на изменение источника объекта данных (опять же, если вы не не имеет доступа к этому, это может быть не очень полезно).

  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)) на другой стороне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...