Moim celem jest możliwość przeciągnięcia elementu z plikuListView to Explorer. Sposób, w jaki próbuję to osiągnąć, jest nieco inny - od wyszukiwania w Google i na tej stronie, nie mogłem znaleźć niczego, co by mi pomogło, lub wystarczająco ściśle odpowiadało temu, co próbuję zrobić. niektóre z przykładów, ponieważ nie rozumiem wystarczająco dużo o tych operacjach przeciągania i upuszczania.
W szczególności kontrola, z której próbuję przeciągać elementy, to TreeListView
z ObjectListView
biblioteka. Kontrolka jest wypełniona węzłami reprezentującymi strukturę wewnątrz skompresowanego pliku archiwum. Wpisy są przetwarzane na dwa różne obiekty reprezentujące plik i katalog. Oba te modele dziedziczą interfejs. Podczas normalnego wyodrębniania tych plików używam a Form
że ja stawiam instancję z kolekcją węzłów idocelowa ścieżka, którą zostaną wyodrębnione jako parametry. Następnie zajmuje się ekstrakcją. Jest tak, że mogę pokazać ogólny i pojedynczy postęp każdego pliku.
Subskrybowanie ItemDrag
wydarzenie, wiem, że muszę zadzwonić DoDragDrop
. Kiedy to robię, muszę mieć możliwość utworzenia formularza wyodrębniania dopiero po upuszczeniu (gdy użytkownik zwolni mysz) Explorer
, a także być w stanie pobrać ścieżkę, w której elementy zostały przeciągnięte.
Z jakiegoś powodu wydaje się to o wiele bardziej skomplikowane, niż powinno być. Wszelkie porady i sugestie byłyby bardzo pomocne.
Odpowiedzi:
0 dla odpowiedzi № 1Nie jestem pewien, jakiego formatu Explorer oczekuje w obiekcie przeciągania, ale ten proces może działać.
- Po rozpoczęciu przeciągania należy wstępnie wyodrębnić wybrane pliki do niektórych temp informator
- Utwórz obiekt DataObject, który zawiera ścieżki wyodrębnionych plików w formacie oczekiwanym przez Eksploratora
- Użyj obiektu DataObject w wywołaniu DoDragDrop
- Kiedy użytkownik upuści Explorer, pliki powinny zostać skopiowane z katalogu tymczasowego do miejsca docelowego upuszczenia
- Śledź wszystkie wyodrębnione pliki i czyszczenie, gdy aplikacja istnieje (id pożądane)
Mam nadzieję że to pomoże.
Edytuj (po niektórych badaniach):
Wierzę, że jeśli używasz
new DataObject(DataFormats.FileDrop, files)
gdzie pliki są ciągami znaków [] plików, które mają być skopiowane (te, które umieściłeś w katalogu tymczasowym), musisz mieć poprawny obiekt DataObject do implementacji.
Haven nie miał okazji napisać jeszcze jednego prototypu do testowania.