2011-11-22 7 views
5

Ostatnio miałem problemy z implementacją funkcji przeciągania i upuszczania poza formularzami systemu Windows. Nie mam problemu z przeciąganiem i upuszczaniem wewnątrz i pomiędzy formularzami okien, a także z pulpitu do postaci okien. Stworzyłem aplikację, w której możesz przeciągać i upuszczać dowolny przedmiot na niej. Moim problemem jest to, że nie wiem jak zaimplementować odwrotność mojej aplikacji, aby przeciągnąć i upuścić z mojej aplikacji na pulpit lub do dowolnego miejsca poza moim formularzem. Wszelkie rady i pomysły z wdzięcznością przyjmę. Dziękuję Ci.Przeciąganie i upuszczanie z formularzy systemu Windows na pulpit i Eksplorator Windows

mówimy o plikach i folderach tutaj ok :)

+1

Jeśli przeciągasz pliki, które już istnieją, wystarczy tylko HDROP. Jeśli chcesz, aby Eksplorator tworzył nowy plik na podstawie tego, co przeciągnął użytkownik, możesz użyć próbek w [Tworzenie czegoś z niczego: Implementacja wirtualnego pliku przyjaznego programistom dla .NET] (http://blogs.msdn.com/ b/opóźnienie/archiwum/2009/10/26/tworzenie-coś-z-niczego-programisty-przyjazny-wirtualny-plik-implementacja-dla-net.aspx). –

+1

Znajdziesz tu kilka sugestii i przykładów: http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/ce2be58a-9b4a-4bae-8759-512e3a47ff85/ – user629926

+0

możliwy duplikat [Przeciągnij i upuść na Desktop/Explorer] (http://stackoverflow.com/questions/3040415/drag-and-drop-to-desktop-explorer) –

Odpowiedz

0

nie wiem, które kontrolują używasz; większość formantów .net ma metodę DoDragDrop. Użyj tej metody, jeśli ci odpowiada.

private void PopulateListView() 
{ 
    string directoryPath=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
    String[] files=System.IO.Directory.GetFiles(directoryPath); 
    if(files!=null) 
    { 
     foreach(string file in files) 
     { 
      listView1.Items.Add(new ListViewItem(file)); 
     } 
    } 
} 


private void listView1_MouseDown(object sender, MouseEventArgs e) 
{ 
    System.Collections.Specialized.StringCollection filePath = new 
    System.Collections.Specialized.StringCollection(); 
    if (listView1.SelectedItems.Count > 0) 
    { 
     filePath.Add(listView1.SelectedItems[0].Text); 
     DataObject dataObject = new DataObject(); 
     dataObject.SetFileDropList(filePath); 
     listView1.DoDragDrop(dataObject, DragDropEffects.Copy); 
    } 
} 
+0

Nie działa z folderami. – Argnist

Powiązane problemy