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

Windows Forms Discussion :

Changer la propriété Checkbox.Checked au passage de la souris si bouton enfoncé


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut Changer la propriété Checkbox.Checked au passage de la souris si bouton enfoncé
    Bonjour,

    j'ai une fenêtre avec un certain nombre de checkboxes empilées. J'aimerai pouvoir accélérer leur saisie par l'utilisateur lorsqu'il enfonce le bouton de la souris sur l'une des checkboxes, qu'il garde le bouton enfoncé et qu'il passe la souris au dessus d'autres checkboxes pour inverser leur propriété .Checked.

    Je n'y arrive pas avec les événements .MouseDown et .MouseEnter :
    lorsque .MouseDown est détecté, je passe une variable booleenne à vrai. Ensuite, lorsque .MouseEnter est détecté sur un checkbox, je teste si ma variable est vraie, auquel cas j'inverse checkbox.Checked.
    Le problème est que .MouseEnter n'est pas détecté pendant un .MouseDown (issu d'un autre contrôle). Une fois que le bouton est relâché, .MouseEnter est bien levé (mais il ne sert à rien à ce moment là).

    Quelqu'un voit-il une solution judicieuse ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    salut

    il y a quelques semaines (1 mois ou 2) une personne à poser une question sur le fait qu'un mouseDown sur un controle ne déclenchait pas le MouseMove sur les autres controles survolés ensuite

    J'avais expliqué comment faire !

    Si tu retrouves cette explication, tu auras la réponse à ta solution !!!

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    Merci theMonz31.

    Le lien était http://www.developpez.net/forums/d58...-click-gauche/.

    Pour ceux que ça peut aider, voici le code. Tous mes controles de type CheckBox ont leurs événements MouseDown, MouseUp et MouseMove abonnés aux mêmes méthodes ci-dessous.

    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
    51
    52
    53
    54
    55
    56
     
            private bool bBoutonGaucheEnfonce = false, bCocherAuSurvol = false;
            private CheckBox chkSrc;
     
            /// <summary>
            /// Generique quand on enfonce le clic gauche
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void checkbox_MouseDown(object sender, MouseEventArgs e)
            {
                CheckBox controle = (CheckBox)sender;
                bBoutonGaucheEnfonce = (e.Button == MouseButtons.Left);
                bCocherAuSurvol = !controle.Checked;
                chkSrc = controle;
                controle.Checked = bCocherAuSurvol;
            }
     
            /// <summary>
            /// Generique quand on relache le clic gauche
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void checkbox_MouseUp(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left) {
                    CheckBox controle = (CheckBox)sender;
                    bBoutonGaucheEnfonce = false;
                    if (controle == chkSrc)
                    {
                        controle.Checked = bCocherAuSurvol;
                    }
                }
            }
     
            /// <summary>
            /// Générique au survol d'un checkbox
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void checkbox_MouseMove(object sender, MouseEventArgs e)
            {
                CheckBox controle = (CheckBox)sender;
                if (!controle.ClientRectangle.Contains(e.Location))
                {
                    // Transfert le focus à la fenetre pour libérer le MouseMove de ce controle
                    this.Focus(); 
                }
                else if (controle != chkSrc)
                {
                    if (bBoutonGaucheEnfonce)
                    {
                        controle.Checked = bCocherAuSurvol;
                    }
                }
            }

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

Discussions similaires

  1. Changer de couleur des <tr> au passage de la souris
    Par sebac dans le forum Mise en page CSS
    Réponses: 17
    Dernier message: 25/06/2009, 14h13
  2. affichage image après passage de la souris sur bouton
    Par nerser dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 30/01/2006, 22h53
  3. [interbase]changer la propriété not null
    Par macadam314 dans le forum InterBase
    Réponses: 7
    Dernier message: 05/05/2005, 12h14
  4. Changer la couleur du texte lors passage souris sur un TD !
    Par Kokito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2005, 15h40
  5. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07

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