2012-07-27 10 views
9

Ich möchte in der Lage sein, eine Datei/eine ausführbare Datei/Verknüpfung in eine Windows-Formularanwendung ziehen und die Anwendung den ursprünglichen Pfad der abgelegten Datei ermitteln und dann als Zeichenfolge zurückgeben?VB.net - Drag & Drop und Dateipfad abrufen?

z. Ziehen Sie ein Bild vom Desktop in die App und die Nachrichtenbox auf den lokalen Pfad des Bildes.

Ist das möglich? Könnte mir vielleicht jemand ein Beispiel geben?

Danke

Antwort

30

Es ist ziemlich einfach. Aktivieren Sie einfach drap-and-drop, indem Sie die Eigenschaft AllowDrop auf True setzen und die Ereignisse DragEnter und DragDrop behandeln.

Im Ereignishandler DragEnter können Sie mit der Klasse DataFormats überprüfen, ob die Daten den gewünschten Datentyp aufweisen.

Im Ereignishandler DragDrop verwenden Sie die Data Eigenschaft der DataEventArgs, um die tatsächlichen Daten zu empfangen.


Beispiel:

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

Dies ist nur eine Note so erklärt, dass, wenn Drag and Drop nicht funktioniert, könnte es sein, weil Sie Visual Studio im Administrator-Modus (Windows 7 ausgeführt werden und Ich glaube). Dies hat auch mit der UAC-Ebene zu tun, die derzeit in Windows festgelegt ist.

+0

Wirklich gute Überlegung (aber es sollte als Kommentar unter der gültigen Antwort hinzugefügt werden) – JCM