IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

déplacer des labels contenu dans flowlayoutpanel [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut déplacer des labels contenu dans flowlayoutpanel
    Bonjour je suis complètement novice en prog vb.net et m'excuse pas avance si je n'emploi pas les bons termes pour me faire comprendre.

    Je souhaite pouvoir déplacer des labels qui ont été créés dynamiquement dans un flowlayoutpanel.

    L'idée serait que lorsque je clique sur le label avec le bouton gauche de la souri et que je le remonte, il prenne la place de celui du dessus (ou lorsque je le baisse il prenne la place de celui du dessous).

    merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,

    Non testé, vous devriez pouvoir faire quelquechose comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var index1 = panel.Controls.IndexOf(label1);
    var index2 = panel.Controls.IndexOf(label2);
    panel.Controls.SetChildIndex(label1, index2);
    panel.Controls.SetChildIndex(label2, index1);

  3. #3
    Membre du Club
    Homme Profil pro
    ergotherapeute
    Inscrit en
    Août 2012
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ergotherapeute
    Secteur : Santé

    Informations forums :
    Inscription : Août 2012
    Messages : 86
    Points : 67
    Points
    67
    Par défaut
    Bonjour, jai réussi avec l'exemple que tu m'as donné... un grand merci !!

    je poste quand même mon code même si je pense qu'il y a moyen de le simplifier et de le rendre plus "académique" mais bon il a le mérite de fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
        Dim position_Curseur As Integer
        'procédure qui permet de déplacer un label de haut en bas dans une liste de labels contenu dans un FlowLayoutPanel
        ' Notifie si le curseur se déplace au dessus du contrôle 
        Private Sub Label2_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label2.MouseMove
            ' Vérification si bouton gauche de la souris est bien enfoncé 
            If e.Button = MouseButtons.Left Then
                'récupère l'index du LBL selectionné
                Dim index_Selectionner As Integer = FlowLayoutPanel1.Controls.IndexOf(Label2)
                'récupère l'index du dernier LBL
                Dim dernier_Index As Integer = FlowLayoutPanel1.Controls.Count - 1
                'vérifie si le curseur va vers le bas et se déplace suffisamment
                If position_Curseur - e.Y < 0 And Math.Abs(position_Curseur - e.Y) > 15 Then
                    'déplace le label selectionné vers le bas si celui-ci n'est pas le dernier de la liste 
                    If index_Selectionner <> dernier_Index Then
                        Dim index_Suivant As Integer = index_Selectionner + 1
                        Dim LBL_Suivant As Label = FlowLayoutPanel1.Controls(index_Suivant)
                        FlowLayoutPanel1.Controls.SetChildIndex(Label2, index_Suivant)
                        FlowLayoutPanel1.Controls.SetChildIndex(LBL_Suivant, index_Selectionner)
                    End If
                End If
                'vérifie si le curseur va vers le haut et se déplace suffisamment
                If position_Curseur - e.Y > 0 And Math.Abs(position_Curseur - e.Y) > 15 Then
                    'déplace le label selectionné vers le haut si celui-ci n'est pas le premier de la liste 
                    If index_Selectionner <> 0 Then
                        Dim index_Precedent As Integer = index_Selectionner - 1
                        Dim LBL_Precedent As Label = FlowLayoutPanel1.Controls(index_Precedent)
                        FlowLayoutPanel1.Controls.SetChildIndex(Label2, index_Precedent)
                        FlowLayoutPanel1.Controls.SetChildIndex(LBL_Precedent, index_Selectionner)
                    End If
                End If
            End If
        End Sub
     
        'procédure qui permet de redonner au label sa couleur initiale lorsque l'utilisateur relache le bouton gauche de la sourie
        Private Sub Label2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label2.MouseUp
            ' Vérification si bouton gauche de la souris est bien enfoncé 
            If e.Button = MouseButtons.Left Then
                Label2.BackColor = System.Drawing.SystemColors.Control
            End If
        End Sub
     
        'procédure qui permet de modifier la couleur du label lorsque l'utilisateur clique dessus avec le bouton gauche de la sourie
        Private Sub Label2_MouseDown1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label2.MouseDown
            ' Vérification si bouton gauche de la souris est bien enfoncé 
            If e.Button = MouseButtons.Left Then
                'enregistre la position verticale du curseur
                position_Curseur = e.Y
                Label2.BackColor = Color.Aquamarine
            End If
        End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Probleme d'affichage des infos contenues dans la base de données
    Par DonKnacki dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/11/2006, 16h19
  2. Réponses: 13
    Dernier message: 30/08/2006, 17h46
  3. Utiliser des fonctions contenues dans un fichier .bas
    Par usbeck dans le forum Visual C++
    Réponses: 4
    Dernier message: 11/08/2006, 12h03
  4. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  5. Réponses: 2
    Dernier message: 12/01/2004, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo