Banner

Drag and Drop con VB .Net

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.

Drag and Drop

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
Siti Ufficiali Editor Free Guide Online Utility
Microsoft Visual Studio MSDN InnoSetup
Apple XCode Documentazione .Net Cyber Installer
Oracle NetBeans Apple Developer NSIS
Debian Eclipse W3C Diagram Online
Distrowatch Bluefish W3C Validator Junior Icon Editor
Brackets W3Schools Edit Cursors Online
TextWrangler

Sito realizzato da Fiaschi Francesco - Aggiornamento Dicembre 2018

W3C - XHTML 1.1 Validated