2011-11-22 12 views
5

Últimamente he estado teniendo dificultades con la implementación de la funcionalidad de arrastrar y soltar fuera de los formularios de Windows. No tengo problemas para arrastrar y soltar dentro y entre los formularios de Windows y desde el escritorio hasta el formulario de Windows. He creado una aplicación donde puedes arrastrar y soltar cualquier elemento en ella. Mi problema es que no sé cómo implementar el reverso de mi aplicación, arrastrar y soltar desde mi aplicación al escritorio o cualquier destino fuera de mi formulario. Cualquier consejo e ideas que acepto con gratitud. Gracias.Arrastrar y soltar desde formularios de Windows a escritorio y explorador de Windows

estamos hablando de archivos y carpetas aquí bien :)

+1

Si está arrastrando archivos que ya existen, entonces todo lo que necesita es una HDROP. Si desea que Explorer cree un nuevo archivo basado en lo que arrastró el usuario, puede usar los ejemplos en [Creación de algo desde la nada: implementación de archivos virtuales amigables con el desarrollador para .NET] (http://blogs.msdn.com/ b/delay/archive/2009/10/26/creating-something-from-nothing-developer-friendly-virtual-file-implementation-for-net.aspx). –

+1

Encontrará algunas sugerencias y ejemplos aquí http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/ce2be58a-9b4a-4bae-8759-512e3a47ff85/ – user629926

+0

posible duplicado de [Arrastrar y soltar a Desktop/Explorer] (http://stackoverflow.com/questions/3040415/drag-and-drop-to-desktop-explorer) –

Respuesta

0

No sé lo que el control que está utilizando; la mayoría de los controles .net tienen un método DoDragDrop. Utilice este método si le conviene.

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

No funciona con carpetas. – Argnist

Cuestiones relacionadas