Volete fare in modo che nella vostra applicazione sia utilizzabile l'opzione di Drag and Drop? Potete fare qualcosa di simile:
In un progetto Windows Form ho aggiunto un panel e 3 PictureBox. Il Panel l'ho lasciato vuoto e nelle PictureBox ho inserito 3 immagini distinte.
Public Class Form1 'array di PictureBox Private pbx() As PictureBox 'indice dell'array Private indice As Integer = 0 'posizione del mouse Private posizione As New Point Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 'si abilita il Panel a ricevere controlli con il DRAG & Drop Panel1.AllowDrop = True End Sub Private Sub PictureBox_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureBox1.MouseMove, PictureBox2.MouseMove, PictureBox3.MouseMove 'si recupera la posizione del puntatore del mouse rispetto alla PictureBox scelta posizione = sender.PointToClient(MousePosition) End Sub Private Sub PictureBox_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureBox1.MouseDown, PictureBox2.MouseDown, PictureBox3.MouseDown 'consente di iniziare un'operazione di trascinamento, con relativa copia, del contenuto della PictureBox scelta sender.DoDragDrop(sender.Image, DragDropEffects.Copy) End Sub Private Sub Panel1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _ Handles Panel1.DragEnter 'si abilita l'effetto copia e.Effect = DragDropEffects.Copy End Sub Private Sub Panel1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) _ Handles Panel1.DragDrop 'si re-inizializza il numero di elementi della matrice ReDim Preserve pbx(indice) 'si istanzia uno nuova PictureBox pbx(indice) = New PictureBox 'Le si assegna un nome,... pbx(indice).Name = "immagine" & indice.ToString '... una posizione,... pbx(indice).Location = Panel1.PointToClient(MousePosition - posizione) 'si recupera l'immagine trascinata e la si inserisce nella Picturebox pbx(indice).Image = e.Data.GetData(DataFormats.Bitmap) 'si imposta la dimensione... pbx(indice).Size = New Size(70, 60) '... e la modalità di ridimensionamento pbx(indice).SizeMode = PictureBoxSizeMode.Zoom 'si aggiunge la PictureBox al Panel1 Me.Panel1.Controls.Add(pbx(indice)) 'si incrementa l'indice che tiene conto delle caselle immagini create indice += 1 End Sub End Class