martedì 29 gennaio 2008

Trascinare File e Cartelle sulla nostra applicazione - Utilizzo di DragEnter

DragEnter può essere utilizzato per intercettare il trascinamento di files e cartelle sulla nostra applicazione Windows Forms da Explorer.
La realizzazione è alquanto semplice, si crea un nuovo progetto Windows Forms, si aggiunge un controllo di tipo ListView, si imposta su questo la proprietà "AllowDrop", si aggiunge il gestore dell'evento "DragEnter".
All'oggetto viene passato un array di nomi di file che sono parcheggiati nella ClipBoard, visto che la clipboard può contenere diversi tipi di dati è necessario specificare il tipo ricercato mettendo la enumerazione corretta "DataFormats" nel nostro caso "FileDrop"

All'interno del gestore dell'evento:

C#

string[] filenames = (string[]) e.Data.GetData(DataFormats.FileDrop);
foreach (string s in filenames)
 {
      // Aggiungi Elemento ListView
}

VB.NET

Dim filenames As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
For Each s As String In filenames
     ‘Aggiungi Elemento ListView
Next

Per ogni elemento "s" ho aggiunto la visualizzazione della relativa icona recuperata tramite una classe "helper" che fa uso di P/INVOKE.
E' possibile, tramite un menu contestuale scegliere LargeIcon o SmallIcon.
Per questioni di visualizzazione di nomi molto lunghi ho preferito lasciare solo il nome del file senza la path a cui appartiene.

Esempio in C#
Esempio VB.NET

1 commento:

Anonimo ha detto...

Grandioso, molto semplice ed utilissimo, complimenti