Drag'nDrop sur PictureBox Dynamiques

Résolu
cs_Paounet Messages postés 36 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 6 juin 2023 - 18 mars 2012 à 13:03
cs_Paounet Messages postés 36 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 6 juin 2023 - 20 mars 2012 à 21:20
Bonjour à tous et merci d'avance pour vos éventuelles réponses...
Malgré mes recherches sur le Drga'nDrop je bute sur ce problème :

2 questions sur le Drag'nDrop sur des PictureBox créées dynamiquement
Pict(i) {i de 0 à 7)... Les événements MouseDown, MouseUp, DragDrop et DragEnter sont également créés dynamiquement avec AddHandler...

1ère question : En utilisant la souris,Comment faire un drag ' Drop entre 2 picturebox issus de Pict(i)..

2ème question : Même question que la précédente mais sans utilisation de la souris, c'est à dire automatiquement = Le drag'nDrop s'effectue mais la
souris ne pointe pas sur les objets PictureBox

Merci Paounet

4 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
19 mars 2012 à 21:43
Salut
si tu veux
tu peux déplacer tes cartes sans le dragdrop
petit exemple

Private lastmouselocation As New Point
    Private mescartes As New List(Of PictureBox)
    Private Sub InitMescartes()
        Dim xp, yp As Integer
        xp = 10
        yp = 10
        For iter = 0 To 8
            Dim carte As New PictureBox
            With carte
                .Width = 100
                .Height = 100
                .BackColor = Color.Aquamarine
                .Location = New Point(xp, yp)
                AddHandler .MouseMove, AddressOf cartesmousemove
                AddHandler .MouseDown, AddressOf cartesmousedown
            End With
           me.Controls.Add(carte)
            mescartes.Add(carte)
            xp += carte.Width + 6
          
        Next
    End Sub


    Private Sub cartesmousemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Dim pt As New Point
        pt = e.Location
        If e.Button = Windows.Forms.MouseButtons.Left Then
            pt.X = (pt.X + DirectCast(sender, PictureBox).Left) - lastmouselocation.X
            pt.Y = (pt.Y + DirectCast(sender, PictureBox).Top) - lastmouselocation.Y
            DirectCast(sender, PictureBox).Location = pt
            DirectCast(sender, PictureBox).BringToFront()
        End If
    End Sub
    Private Sub cartesmousedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        lastmouselocation = e.Location
    End Sub


c'est mieux de placer tes cartes dans une panel
pas directement sur la form
3
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
18 mars 2012 à 18:30
0
cs_Paounet Messages postés 36 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 6 juin 2023 3
18 mars 2012 à 22:03
Merci de ta réponse Duke49 mais je ne comprends pas ta réponse via
le lien Microsoft...
Reexplication du Pb: J'ai créé 8 picturesbox Pict(i) pour i 0 de 7
(Ce sont des cartes de jeux)
For i = 0 To 7
Pict(i) = New PictureBox
Me.Controls.Add(Pict(i))
With Pict(i)
..... etc
.Location = New Point(X, Y)
.Image Liste_Cartes.Images(No(i)) : .Enabled True
.Tag = Val
.AllowDrop = True
.Visible = True
AddHandler Pict(i).DoubleClick, AddressOf Pict_DoubleClick
AddHandler Pict(i).MouseDown, AddressOf Pict_MouseDown
AddHandler Pict(i).MouseMove, AddressOf Pict_MouseMove
AddHandler Pict(i).DragEnter, AddressOf Pict_DragEnter
AddHandler Pict(i).DragDrop, AddressOf Pict_DragDrop
End With

1ère question : En utilisant la souris,Comment faire un drag ' Drop entre 2 picturebox issus de Pict(i)..

2ème question : Même question que la précédente mais sans utilisation de la souris, c'est à dire automatiquement = Le drag'nDrop s'effectue mais la souris ne pointe pas sur les objets PictureBox

Paounet
0
cs_Paounet Messages postés 36 Date d'inscription mercredi 14 avril 2004 Statut Membre Dernière intervention 6 juin 2023 3
20 mars 2012 à 21:20
Merci ShayW de ta réponse...
Quand à ta suggestion de les mettre dans un panel... Ce que j'avais fait
au départ, mais je suis heurté au problème de passer une carte par ex Pict(i) appartenant au panel Tapis1 vers le Panel TapisCentral, elle était invisible.. car les coordonnées ne correspondaient pas..
Je suppose que tu comprends le pb.

Malgré mes rcherches j'ai opté pour une solution ou toutes mes cartes sur
la feuille globale.
Paounet
0
Rejoignez-nous