Proporcionar funcionalidad de arrastrar y colocar archivos en una aplicación de Visual C#

En este artículo se muestra cómo proporcionar funcionalidad de arrastrar y colocar archivos en una aplicación de Visual C#.

Versión original del producto: Visual C++
Número de KB original: 307966

Resumen

El procedimiento paso a paso que se describe en este artículo muestra cómo proporcionar funcionalidad de arrastrar y colocar archivos en una aplicación de Visual C#. Se usa un ListBox control como destino del procedimiento de arrastrar y colocar archivos.

Requisitos

En esta lista se describen el hardware, el software, la infraestructura de red y los Service Pack recomendados que necesita: Visual C#.

En este artículo se supone que está familiarizado con los temas siguientes:

  • Windows Forms ListBox control
  • Windows Forms event handling

Pasos para compilar el ejemplo

El control ListBox proporciona dos eventos de arrastrar y colocar que debe controlar: DragEnter y DragDrop. El DragEnter evento se produce cuando se arrastra un objeto dentro de los límites del control y se usa para determinar si el objeto que se está arrastrando es aquel que desea permitir que se quite en el control. Este evento se controla en los casos en los que un archivo o archivos se arrastran al control. Esto permite mostrar el icono adecuado cuando el objeto se arrastra sobre el control, en función del objeto que se está arrastrando. El DragDrop evento se produce cuando el objeto que se está arrastrando se ha liberado en el control. Este evento se controla para recuperar el objeto . El objeto Data se usa para recuperar los datos.

El método del GetData objeto Data devuelve una matriz de cadenas que contienen los nombres de ruta de acceso completos de los archivos que se arrastraron al ListBox control. Puede usar esta información de ruta de acceso de archivo para realizar las operaciones necesarias en los archivos. Por ejemplo, puede usar clases en el System.IO espacio de nombres para abrir y leer los archivos, mover los archivos o copiar los archivos en una nueva ubicación. En este ejemplo, solo tiene que agregar la ruta de acceso completa a los archivos que se arrastran al ListBox control.

Para proporcionar funcionalidad de arrastrar y colocar archivos en una aplicación de Visual C#, siga estos pasos:

  1. Cree una nueva aplicación Windows Forms en Visual C# .NET o Visual C# 2005. Form1 se crea de forma predeterminada.

  2. Use el cuadro de herramientas para agregar un ListBox control a Form1.

  3. En la ventana Propiedades , cambie la AllowDrop propiedad del ListBox control a True para permitir que los objetos se arrastren al control.

  4. En Explorador de soluciones, haga clic con el botón derecho en Form1 y, a continuación, haga clic en Ver código.

  5. Para controlar el DragEnter evento, agregue el siguiente método debajo de la sección de código que windows Form Designer genera en la Form1 clase :

    private void listBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
    {
        if(e.Data.GetDataPresent(DataFormats.FileDrop))
            e.Effect = DragDropEffects.All;
        else
            e.Effect = DragDropEffects.None;
    }
    
  6. Para controlar el DragDrop evento, agregue el método siguiente a la Form1 clase inmediatamente después del método que agregó en el paso 5:

    private void listBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
    {
        string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
        int i;
        for(i = 0; i < s.Length; i++)
            listBox1.Items.Add(s[i]);
    }
    
  7. Para asociar los dos controladores de eventos a los eventos de control, agregue el código siguiente en el Form1 constructor después de la llamada a InitializeComponent:

    this.listBox1.DragDrop += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragDrop);
    this.listBox1.DragEnter += new
         System.Windows.Forms.DragEventHandler(this.listBox1_DragEnter);
    
  8. Compile y ejecute el proyecto.

  9. Arrastre uno o varios archivos desde el escritorio u otra carpeta al control ListBox. La ruta de acceso completa de los archivos se agrega al ListBox control .

Referencias

Para obtener más información, vea los siguientes sitios web: