Per il form ti devi comportare come per gli altri controlli, ovvero:
- Imposti l' evento MouseDown sul controllo da cui parte il drag.
- Imposti
AllowDrop a true del form (o del controllo che lo deve ricevere).
- Imposti l' evento DragEnter del form (o del controllo che lo deve ricevere) per visualizzare correttamente il mouse.
- Imposti l' evento DragDrop del form (o del controllo che lo deve ricevere) per accettare il drop.
Attenzione ad una cosa, per qualche ragione misteriosa, i controlli PictureBox non espongono la property AllowDrop a design-time, quindi se usi un PictureBox come destinazione, la devi impostare nel codice (neppure l' intellisense la mostra ma esiste).
Private Sub PictureBox1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
Dim s As String = PictureBox1.ImageLocation
If s Is Nothing Then
s = "No location"
End If
PictureBox1.DoDragDrop(s, DragDropEffects.Copy)
End Sub
Private Sub Form1_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter
If e.Data.GetDataPresent(DataFormats.StringFormat) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub Form1_DragDrop(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop
Dim s As String = e.Data.GetData(DataFormats.StringFormat)
MessageBox.Show(s)
End Sub
In questo esempio se trascini dal PictureBox al form ti appare un message box con la Location dell' immagine (la Location potrebbe non esistere).
Ricorda di mettere a true AllowDrop del form.