web-dev-qa-db-fra.com

Glissez-déposez et obtenez le chemin du fichier dans VB.NET

J'aimerais pouvoir faire glisser un fichier/exécutable/raccourci dans une application Windows Forms et que l'application détermine le chemin d'origine du fichier déposé puis le renvoie sous forme de chaîne.

Par exemple. faites glisser une image du bureau vers l'application et la boîte de message sur le chemin local de l'image.

Est-ce possible? Quelqu'un pourrait-il me donner un exemple peut-être?

15
rabbitt

C'est assez simple. Activez simplement le drapage et la suppression en définissant la propriété AllowDrop sur True et gérez DragEnter et - DragDrop événements.

Dans le gestionnaire d'événements DragEnter, vous pouvez vérifier si les données sont du type souhaité à l'aide de la classe DataFormats .

Dans le gestionnaire d'événements DragDrop, utilisez la propriété Data de DragEventArgs pour recevoir les données réelles et le - GetData méthode


Exemple:

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
38
sloth

Ceci est juste une note afin d'indiquer que si le glisser-déposer ne fonctionne pas, cela pourrait être dû au fait que vous exécutez Visual Studio en mode administrateur (Windows 7 et plus, je crois). Cela a également à voir avec le niveau UAC actuellement défini sur votre Windows.

4
gouderadrian