none
DragDrop RRS feed

  • Domanda

  • Ciao a tutti, qualcuno può darmi una mano please ?

    Su un form ho 7 PictureBox che caricano la stessa immagine. Tali immagini devono poter essere spostate su uno qualsiasi dei 7 Panel che uso come contenitori. Ho provato con il seguente codice, ma anche se VB non restituisce alcun errore, le pictureBox rimangono al loro posto, cioè non si muovono e nei Panel non appare alcuna immagine. Cosa c’è di sbagliato ?

    Un’ultima cosa: per permettere il trascinamento di una PBox qualsiasi sugli altri panel è sufficiente che ripeta il codice Panel_DragEnter e Panel_DragDrop per i restanti panel ?

    Grazie ciao

    Public Class Form1
    
        Private pcb() As PictureBox
        Private ix As Integer = 0
    Private Sub PictureBox_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox3.MouseDown, PictureBox4.MouseDown, PictureBox5.MouseDown, PictureBox6.MouseDown, PictureBox7.MouseDown
        
    sender.DoDragDrop(sender.Image, DragDropEffects.Move)
        End Sub
    
    Private Sub Panel2_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Panel2.DragEnter
            e.Effect = DragDropEffects.Move  
        End Sub
    
    Private Sub Panel2_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Panel2.DragDrop
    
            ReDim Preserve pcb(indice)
    
            pcb(ix) = New PictureBox
            pcb(ix).Name = "img" & indice.ToString
            pcb(ix).Location = PointToClient(MousePosition)
            pcb(ix).Image = e.Data.GetData(DataFormats.Bitmap)          
    
            Me.Panel2.Controls.Add(pcb(ix))
            
        End Sub

    venerdì 26 aprile 2013 12:26

Risposte

  • Ciao Alad_in,

    questo articolo tratto da Msdn tratta e spiega in che modo eeguire il drag e drop di oggetti in VisualBasic , trovi anche questo che e il più utile per le tue esigenze Dragging a Picture .

    http://msdn.microsoft.com/en-us/library/aa289508(v=vs.71).aspx

    Ciao.


    • Contrassegnato come risposta Irina Turcu martedì 30 aprile 2013 14:07
    venerdì 26 aprile 2013 12:33
  • Ho cambiato i panel con altre pictureBox e ho rivisto il codice.

    Eccolo

    Public Class Form 1
    
    Dim ImgO as PictureBox
    
    Private Sub PictureBox4_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox4.MouseDown, PictureBox5.MouseDown, PictureBox6.MouseDown, PictureBox7.MouseDown 
            ImgO = sender
        End Sub
    
        Private Sub PictureBox4_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox4.MouseMove, PictureBox5.MouseMove, PictureBox6.MouseMove, PictureBox7.MouseMove
            If e.Button = Windows.Forms.MouseButtons.Left Then
            sender.DoDragDrop(sender.Image, DragDropEffects.Copy)
            End If
        End Sub
    
        Private Sub PictureBox16_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox16.DragEnter, PictureBox18.DragEnter, PictureBox17.DragEnter, PictureBox19.DragEnter, PictureBox20.DragEnter
            e.Effect = DragDropEffects.Copy
        End Sub
    
        Private Sub PictureBox16_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox16.DragDrop, PictureBox18.DragDrop, PictureBox17.DragDrop, PictureBox19.DragDrop, PictureBox20.DragDrop
            sender.Image = e.Data.GetData(DataFormats.Bitmap)
            ImgO.Visible = False
        End Sub
    Ciao Alad


    • Contrassegnato come risposta Irina Turcu martedì 30 aprile 2013 14:07
    • Modificato Alad_in martedì 30 aprile 2013 18:34
    martedì 30 aprile 2013 11:12

Tutte le risposte

  • Ciao Alad_in,

    questo articolo tratto da Msdn tratta e spiega in che modo eeguire il drag e drop di oggetti in VisualBasic , trovi anche questo che e il più utile per le tue esigenze Dragging a Picture .

    http://msdn.microsoft.com/en-us/library/aa289508(v=vs.71).aspx

    Ciao.


    • Contrassegnato come risposta Irina Turcu martedì 30 aprile 2013 14:07
    venerdì 26 aprile 2013 12:33
  • Grazie Carmelo, ho letto gli articoli da te consigliati che mi hanno permesso di risolvere una parte del problema: quei codici mi permettono di trascinare una pictureBox su un Panel specifico. Ho provato a replicare il codice cambiando i nomi dell PictureBox e dei Panel ma succedono delle cose strane: trascinando un PicBox se ne spostano altre ecc. Ciò che non capisco è come fare per  spostare una PicBox qualsiasi, su uno qualsiasi dei 7 Panel, non su un Panel specifico.

    Grazie ciao.

    domenica 28 aprile 2013 10:38
  • Ciao Alad_in,

    Nell'esempio lasciato sopra da Carmelo viene mostrato come effettuare il drag di un'immagine da una PictureBox chiamata PictureBox1 ad un'altra chiamata PictureBox2. Sei riuscito ad adattare il concetto per una sola PictureBox e un solo Panel? Se l'hai fatto, non dovresti avere problemi per replicare lo scenario a 7 PictureBox e 7 Panel. Dov'è che stai incontrando dei problemi ad adattare il codice? Potrebbe aiutarci se postassi i pezzi chiave del tuo codice.

    Grazie,


    Irina Turcu - Microsoft

    [Manifesto] Regole e Aspetti generali all'uso dei forum MSDN

    Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e approfondire la loro conoscenza dei prodotti e tecnologie Microsoft.

    LinkedIn

    lunedì 29 aprile 2013 13:00
  • Ciao Irina,

    dopo un'infinità di prove ho finalmente risolto. Non avevo capito di dover inserire i Panels negli Handels degli eventi DragEnter e DragDrop. Il codice è quello citato da Carmelo, ripreso pari pari ma con le opportune modifiche relative alle PictureBox e ai Panel.

    Grazie ciao

    lunedì 29 aprile 2013 19:36
  • Ciao Alad_in,

    Ciao Irina,

    dopo un'infinità di prove ho finalmente risolto. Non avevo capito di dover inserire i Panels negli Handels degli eventi DragEnter e DragDrop. Il codice è quello citato da Carmelo, ripreso pari pari ma con le opportune modifiche relative alle PictureBox e ai Panel.

    Grazie ciao

    se vuoi puoi postare la soluzione :) , sarà così disponibile per tutti coloro che incontrano in futuro il tuo stesso problema.

    Ciao.


    lunedì 29 aprile 2013 19:41
  • Ho cambiato i panel con altre pictureBox e ho rivisto il codice.

    Eccolo

    Public Class Form 1
    
    Dim ImgO as PictureBox
    
    Private Sub PictureBox4_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox4.MouseDown, PictureBox5.MouseDown, PictureBox6.MouseDown, PictureBox7.MouseDown 
            ImgO = sender
        End Sub
    
        Private Sub PictureBox4_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox4.MouseMove, PictureBox5.MouseMove, PictureBox6.MouseMove, PictureBox7.MouseMove
            If e.Button = Windows.Forms.MouseButtons.Left Then
            sender.DoDragDrop(sender.Image, DragDropEffects.Copy)
            End If
        End Sub
    
        Private Sub PictureBox16_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox16.DragEnter, PictureBox18.DragEnter, PictureBox17.DragEnter, PictureBox19.DragEnter, PictureBox20.DragEnter
            e.Effect = DragDropEffects.Copy
        End Sub
    
        Private Sub PictureBox16_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles PictureBox16.DragDrop, PictureBox18.DragDrop, PictureBox17.DragDrop, PictureBox19.DragDrop, PictureBox20.DragDrop
            sender.Image = e.Data.GetData(DataFormats.Bitmap)
            ImgO.Visible = False
        End Sub
    Ciao Alad


    • Contrassegnato come risposta Irina Turcu martedì 30 aprile 2013 14:07
    • Modificato Alad_in martedì 30 aprile 2013 18:34
    martedì 30 aprile 2013 11:12