2012-07-27 22 views
9

Mi piacerebbe essere in grado di trascinare un file/eseguibile/collegamento in un'applicazione Windows Form e chiedere all'applicazione di determinare il percorso originale del file rilasciato, quindi restituirlo come stringa?VB.net - trascina e rilascia e ottieni il percorso del file?

E.g. trascina un'immagine dal desktop nell'app e nella casella dei messaggi sul percorso locale dell'immagine.

È possibile? Qualcuno potrebbe darmi un esempio?

Grazie

risposta

30

è abbastanza facile. Basta abilitare il drap-and-drop impostando la proprietà AllowDrop su True e gestire gli eventi DragEnter e DragDrop.

Nel gestore di eventi DragEnter, è possibile verificare se i dati sono del tipo desiderato utilizzando la classe DataFormats.

Nel gestore di eventi DragDrop, utilizzare la proprietà Data dello DataEventArgs per ricevere i dati effettivi.


Esempio:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Me.AllowDrop = True 
End Sub 

Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop 
    Dim files() As String = e.Data.GetData(DataFormats.FileDrop) 
    For Each path In files 
     MsgBox(path) 
    Next 
End Sub 

Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter 
    If e.Data.GetDataPresent(DataFormats.FileDrop) Then 
     e.Effect = DragDropEffects.Copy 
    End If 
End Sub 
2

Questa è solo una nota in modo affermare che se il Drag and Drop non funziona, potrebbe essere perché si esegue Visual Studio in modalità amministratore (Windows 7 e su credo). Questo ha anche a che fare con il livello UAC attualmente impostato su Windows.

+0

Davvero una buona considerazione (tuttavia dovrebbe essere aggiunto come commento sotto la risposta valida) – JCM

Problemi correlati