none
ayuda con drag and drop RRS feed

  • Pregunta

  • buenos dias tengo una duda como puedo hacer para copiar un fichero en una ruta especifica digamos tengo un fichero lo arrastro a un panel  donde este lo tiene que guardar en una ruta dejo parte de mi codigo haber si me pueden ayudar 

     con esta parte de codigo   e.Effect = DragDropEffects.Copy;  lo copia pero no se donde lo guarda yo quisiera que lo guarde en una ruta que yo le pase  (siempre va ser la misma ruta  string ruta = @"C:\carlos hp compartido\\";)

      private void panel1_DragEnter(object sender, DragEventArgs e)
            {
                if (e.Data.GetDataPresent(DataFormats.FileDrop))
    
                    e.Effect = DragDropEffects.Copy;
    
                else
                    e.Effect = DragDropEffects.None;
            }
    
            private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                string ruta = @"C:\carlos hp compartido\\";
    
                string[] file =  (string[])e.Data.GetData(DataFormats.FileDrop, false);
               string rutafin= ruta + file;
    
            }

    lunes, 30 de enero de 2017 11:48

Todas las respuestas

  • con esta parte de codigo   e.Effect = DragDropEffects.Copy;  lo copia pero no se donde lo guarda

    No, con ese código no copia nada. Lo único que hace es pintar en pantalla el cursor de "copiar", pero no hace nada con el archivo. La copia la tienes que hacer tú en el evento DragDrop. Puedes usar para ello una llamada a System.IO.File.Copy(origen, destino). El origen ya lo tienes porque te llega en e.Data. Y el destino lo puedes construir tú mismo concatenando al nombre del fichero la ruta que has elegido como destino (después de quitarle la ruta de origen, claro está).
    lunes, 30 de enero de 2017 18:07
  • buenas gracias por tu ayuda  tengo una pregunta como le pasas el objeto a copy ya que esa funcion solo admite strings

    lo que yo intento hacer es copiar un fichero desde la bandeja de entrada a ese drag para que lo guarde en la ruta por defecto  . ese objeto no tienen ruta  creo yo que no tienen ruta  creo yo nose si me puedes explicar mejor te lo agradecería mucho 

      private void panel1_DragDrop(object sender, DragEventArgs e)
            {
                string ruta = @"C:\carlos hp compartido\\";
    
                string[] file =  (string[])e.Data.GetData(DataFormats.FileDrop, false);
                System.IO.File.Copy(e.Data, System.IO.Path.Combine(ruta, file[1]));
               
    
            }


    martes, 31 de enero de 2017 10:09
  • buenas gracias por tu ayuda  tengo una pregunta como le pasas el objeto a copy ya que esa funcion solo admite strings

    No, al Copy no le pasas un objeto, sino la ruta completa del fichero. Entiendo que esa ruta ya sabes sacarla del objeto, puesto que tú mismo pusiste el ejemplo de código que sacaba el fichero (o ficheros, ya que podrían haber pasado varios) llamando a e.Data.GetData.

    string[] archivosArrastrados = (string[])e.Data.GetData(DataFormats.FileDrop, false);
    string archivoAcopiar = archivosArrastrados[0];
    string archivoDestino = System.IO.Path.Combine(ruta, System.IO.Path.GetFileName(archivoAcopiar));
    System.IO.File.Copy(archivoAcopiar, archivoDestino);


    martes, 31 de enero de 2017 19:13