Перетащите на рабочий стол / проводник - PullRequest
29 голосов
/ 14 июня 2010

По моему сценарию.

Я получил приложение, которое загружает файловую структуру (папки, файлы) из базы данных в WPF ListView. Теперь я хотел бы получить файл из этого ListView, перетащить его на рабочий стол (или в какое-нибудь открытое окно проводника) и поместить туда. Основные Drag and Drop, ничего особенного. Это звучит как «стандартная» функция для приложения Windows, но Google не поможет.

Так как мне этого добиться? Interops

Спасибо

Редактировать : Спасибо за решение, мне все еще нужно было немного поискать в Google. Вот мое полное решение .

1 Ответ

28 голосов
/ 15 июня 2010

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

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

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

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

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

...