Drag and drop [Résolu]

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

Après avoir réussi a finir mon TP, j'ai voulu tester plusieurs choses.
Plutôt que de créer des panels directement dans la Form, j'ai voulu les créer dans le code

 For i = 0 To 20

            For j = 0 To 19

                Dim P As New Panel

                TLPcouleur.Controls.Add(P)

                P.BackColor = Color.FromArgb(Int(255 * Rnd()), Int(255 * Rnd()), Int(255 * Rnd()))
                AddHandler P.Click, AddressOf panelCouleur_click
                AddHandler P.DoubleClick, AddressOf panelCouleur_Doubleclick
                AddHandler P.MouseDown, AddressOf Panelcouleur_MouseDown
                AddHandler P.MouseMove, AddressOf panelCouleur_MouseMove
                AddHandler P.DragEnter, AddressOf panelCouleur_DragEnter
                AddHandler P.DragDrop, AddressOf panelCouleur_DragDrop

            Next

        Next


Je leurs ajoute donc les events dont j'ai besoin

Le problème est que les seuls event qui fonctionnent sont Click, DoubleClick, mouseDown et MouseMove, les events DragEnter et DragDrop ne fonctionnent plus et j'ignore pourquoi.
Le code pour les 4 Sub des events nécessaires pour mon DragandDrop sont les suivantes :
Private Sub panelcouleur_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    MouseIsDown = True

End Sub


Private Sub panelCouleur_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    If Not tmrAvancer.Enabled Then
        If MouseIsDown Then
            actualPanel = CType(sender, Panel)
            actualPanel.DoDragDrop(actualPanel.BackColor.Name, DragDropEffects.Copy Or DragDropEffects.Move)

        End If
        MouseIsDown = False
    End If

End Sub


Private Sub panelCouleur_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
    If Not tmrAvancer.Enabled Then
        If (e.Data.GetDataPresent(DataFormats.Text)) Then
            e.Effect = DragDropEffects.Copy
        Else
            e.Effect = DragDropEffects.None
        End If
    End If
End Sub


Private Sub panelCouleur_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs)
    If Not tmrAvancer.Enabled Then
        actualPanel.Tag = sender.backcolor
        sender.backcolor = actualPanel.BackColor
        actualPanel.BackColor = actualPanel.Tag
    End If
End Sub


ne prenez pas en compte les "if...end if" avec "Not tmrAvancer.Enabled ", il ne concerne pas mon problème.
TLPcouleur est un TableLayoutPanel de 21 colonnes et 20 lignes
Quelqu'un à une idée d'où vient mon problème ?
Si vous avez besoin de précisions sur quelque chose n'hésitez pas à me demander :3

Merci

3 réponses

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Bonjour
d'abord active option explicit on et option strict on
et decoche visualbasic des "imported namespaces"
et ensuite corrige tes erreurs

ex au lieu de
      P.BackColor = Color.FromArgb(Int(255 * Rnd()), Int(255 * Rnd()), Int(255 * Rnd()))

Dim r As New Random
P.BackColor = Color.FromArgb(r.Next(0, 256), r.Next(0, 256), r.Next(0, 256))

il y en d'autre aussi
Lesquels je dois décocher ?
http://puu.sh/7XndU.png

et quel est la différence entre r.Next(0, 256) et Int(255 * Rnd()) ? surtout que ça fonctionne bien ~~
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
le premier
r.Next(0, 256) en vb.net
Int(255 * Rnd()) en vb6
et aussi
active option explicit on et option strict on
Je l'ai fait, mais ça ne résout pas mon problème ~~
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
et
active option explicit on et option strict on ?
oui :3
il reste par contre une erreur avec la msgbox et je sais pas pourquoi *-*
Sujet résolu, il suffisait d'ajouter une ligne :
P.AllowDrop = true
dans la boucle, cette option est a False de base
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
C 'est surement cela qui a "résolu" l'apparition d'un message d'erreur avec "la msgbox" et "option Strict On" ...
!!!
Ouais, ouais ...