2010-06-14 25 views
27

Zgodnie z moim scenariuszem.Przeciągnij i upuść na pulpit/Explorer

Mam aplikację, która ładuje filestrukturę (foldery, pliki) z bazy danych do listwy WPF. Teraz chciałbym pobrać plik z tego ListView, przeciągnąć go przez mój pulpit (lub trochę otwartego okna eksploratora) i upuścić tam. Podstawowe przeciąganie i upuszczanie, nic nadzwyczajnego. Brzmi to jak "standardowa" funkcja dla aplikacji Windows - ale Google nie pomoże.

Jak mogę to osiągnąć? Interops?

Dzięki

Edytuj: Dzięki za rozwiązanie, miałem jeszcze zrobić kilka googling. Here's my complete solution.

+1

byłoby to bardzo cenne, gdybyś tutaj zamieścił kompletne rozwiązanie. –

+0

Próbowałem twojego przykładu, ale nie skompiluję, DragDrop jest nieznany. Czy muszę dodać referencję lub coś takiego? – GuidoG

Odpowiedz

27

DragDrop.DoDragDrop może to zrobić tak długo, jak przekazać odpowiedni DataObject.

Najpierw skopiuj pliki gdzieś. Możesz użyć System.IO.Path.GetTempPath(), jeśli nie masz nigdzie lepszego.

Następny utworzyć tablicę łańcuch zawierający pełne ścieżki do plików i wykonaj następujące czynności:

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

To jest rzeczywiście możliwe, aby to zrobić bez wstępnego kopiując pliki ale dostanie się do niektórych skomplikowanych interakcji IDataObject, więc chyba, że ​​twoje pliki są potencjalnie bardzo duże i nie są jeszcze w systemie plików, najpierw wypróbowałbym tę metodę.

+0

Dzięki, spróbuję od razu. –

+0

Pracowałem, dziękuję. –

+3

Wiem, że to bardzo stary wątek, ale czy mógłbyś rozszerzyć swoje oświadczenie o "chyba że twoje pliki są potencjalnie bardzo duże"? Próbuję to dokładnie zrobić. Posiada funkcję DragDrop, która pobiera plik, kiedy go gdzieś upuszcza. – Falgantil