Реализуйте ленивое перетаскивание

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

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

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

2 ответа

Может быть, это может сработать для вас...

В каждом случае GetData() сделайте это:

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

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

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

Другие вопросы по тегам