Я пытаюсь реализовать ленивую операцию перетаскивания. Я хочу показать список с файлами моему пользователю, когда пользователь перетаскивает файл и переносит его в папку, содержимое которой нужно загружать и доставлять.Выполнение ленивого перетаскивания
Я использую интерфейс IDataObject, но моя проблема в том, что метод GetData() запрошен слишком рано. Например, перетаскивание по рабочему столу (без какого-либо снижения) запросит метод GetData() пару раз. И каждый из этих звонков начинает загрузку файла:/
Теперь, мой вопрос: что здесь не так - почему метод GetData() называется без капли? Есть ли другой способ реализовать ленивое перетаскивание & операции удаления в .net?
Проблема, с которой вы столкнулись, - это прослушивание события переадресации в проводнике, которое вы хотите инициировать загрузку. Вы можете доказать это, перетащив на другой элемент управления в своей форме, который вы сможете подписаться на событие drop. –
Да, это может мне помочь, но это звучит намного сложнее и связывает мое падение только с исследователем. Другие таргетинты, которые обычно принимают filedrops, не смогут получить данные. Теоретически событие drop должно вызывать * IDataObject.GetData() * - и только он должен это делать. Затем я могу доставить данные (прямое или через скачивание). Однако есть призывы к этим функциям без участия drop, что делает этот подход непригодным. – tanascius
Нет ли способа отложить загрузку до тех пор, пока принимающая сторона не попросит вас увидеть байты? – 2010-09-14 20:38:42