Реализуйте ленивое перетаскивание - PullRequest
7 голосов
/ 14 сентября 2010

Я пытаюсь реализовать ленивую операцию перетаскивания.Я хочу показать мой список пользователям с файлами, когда пользователь перетаскивает файл и помещает его в папку, содержимое должно быть загружено и доставлено.

Я использую интерфейс IDataObject , но моя проблема в том, что метод GetData () запрашивается слишком рано.Например, при перетаскивании по рабочему столу (без какой-либо потери) несколько раз будет запрашиваться метод GetData () .И каждый из этих вызовов запускает загрузку файла: /

Теперь мой вопрос: что здесь не так - почему метод GetData () вызывается без какого-либо сброса?Есть ли другой способ реализовать ленивые операции перетаскивания в .net?

Ответы [ 2 ]

1 голос
/ 24 сентября 2010

Я думаю, что GetData вызывается так, чтобы (потенциальная) цель отбрасывания могла определить, может ли она принять (потенциальную) позицию (и) отбрасывания. Вы рассматривали возможность использования расширения оболочки?

1 голос
/ 24 сентября 2010

Возможно, это может сработать для вас ...

При каждом появлении GetData () сделайте следующее:

  • здесь вам понадобится какой-то таймер.
  • , если ваш таймер уже активен, убейте его.
  • создайте и запустите новый таймер.Сделайте это 1 сек или определите его продолжительность из эксперимента.
  • при событии таймера сделайте то, что должно быть сделано.

Я использую подобную процедуру во многих случаях, когда такой обходной путь необходим.

...