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?
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
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.