2010-06-14 2 views
27

Следуя моему сценарию.Перетаскивание на рабочий стол/проводник

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

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

Благодаря

Редактировать: Спасибо за решение, я все еще должен был сделать некоторые погуглите. Here's my complete solution.

+1

было бы понятно, если вы разместите свое полное решение в качестве ответа здесь. –

+0

Я пробовал ваш пример, но он не компилируется, DragDrop неизвестен. Нужно ли добавлять ссылку или что-то еще? – GuidoG

ответ

27

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

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

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

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

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

+0

Спасибо, я сразу же попробую. –

+0

Работал, спасибо. –

+3

Я знаю, что это очень старый поток, но вы могли бы расширить свое утверждение о «если ваши файлы потенциально очень большие»? Я пытаюсь сделать именно это. Имейте функцию DragDrop, которая загружает файл при его удалении. – Falgantil

Смежные вопросы