Подтвердить что ты не робот

Перетаскивание на рабочий стол/проводник

Следуя моему сценарию.

У меня есть приложение, которое загружает Filestructure (Folders, Files) из базы данных в WPF ListView. Теперь я хотел бы захватить файл из этого списка, перетащить его поверх своего рабочего стола (или в какое-то открытое окно проводника) и отбросить его. Основное перетаскивание, ничего необычного. Это звучит как "стандартная" функция для приложения Windows, но google не поможет.

Итак, как я могу это достичь? Interops?

Спасибо

Изменить. Спасибо за решение, мне все равно пришлось делать некоторые поисковые запросы. Здесь мое полное решение.

4b9b3361

Ответ 1

DragDrop.DoDragDrop может сделать это, если вы передадите ему соответствующий DataObject.

Сначала скопируйте файлы где-нибудь. Вы можете использовать System.IO.Path.GetTempPath(), если у вас нет ничего лучше.

Далее создайте строковый массив, содержащий полные пути к файлам и сделайте следующее:

string[] paths = ...;
DragDrop.DoDragDrop(this, new DataObject(DataFormats.FileDrop, paths),
                    DragDropEffects.Copy); 

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