2011-11-22 14 views
5

Ultimamente ho avuto difficoltà con l'implementazione della funzionalità di trascinamento della selezione all'esterno dei moduli di Windows. Non ho problemi a trascinare e rilasciare all'interno e tra i moduli di Windows e dal desktop al modulo di Windows. Ho creato un'applicazione in cui è possibile trascinare e rilasciare qualsiasi elemento su di esso. Il mio problema è che non so come implementare il retro della mia applicazione, per trascinare e rilasciare la mia app sul desktop o verso qualsiasi destinazione esterna al mio modulo. Qualsiasi consiglio e idea accetterò con gratitudine. Grazie.Trascina e rilascia da Windows Form per desktop e Windows Explorer

stiamo parlando di file e cartelle qui ok :)

+1

Se si stanno trascinando file già esistenti, un HDROP è tutto ciò che serve. Se vuoi che Explorer crei un nuovo file basato su ciò che l'utente ha trascinato, puoi utilizzare gli esempi su [Creazione di qualcosa dal nulla: implementazione di file virtuali per sviluppatori per .NET] (http://blogs.msdn.com/ b/delay/archive/2009/10/26/creazione-qualcosa-da-nulla-developer-friendly-virtual-file-implementazione-per-net.aspx). –

+1

Qui trovate alcuni suggerimenti e esempi http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/ce2be58a-9b4a-4bae-8759-512e3a47ff85/ – user629926

+0

possibile duplicato di [Trascina e rilascia Desktop/Explorer] (http://stackoverflow.com/questions/3040415/drag-and-drop-to-desktop-explorer) –

risposta

0

Non so che controllano si sta utilizzando; la maggior parte dei controlli .net ha un metodo DoDragDrop. Per favore usa questo metodo se ti va bene.

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

Non funziona con le cartelle. – Argnist

Problemi correlati