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 :

CheckBox et KeyCode


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut CheckBox et KeyCode
    Salut tout le monde!

    Alors, voilà, je crée une application qui doit cocher des items et additionner les coûts de ceux-ci, mais je dois attribuer des raccourcis Alt+Key a chaque CheckBox (par exemple, Alt+D1 pour le premier, Alt+D2 pour le deuxième, etc.).

    Seulement, je suis confronté à un problème. Je me suis inspiré du code trouvé ici ( http://dotnetperls.com/keycode ) pour effectuer une combinaison de deux touches, mais je ne sais pas comment écrire le "then" du "if".

    J'essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Alt && e.KeyCode == Keys.D1)
        {
            (chxBox1.Checked)
        }
    }
    mais cela ne fonctionne guère...

    Si quelqu'un pouvait m'aider à me sortir de cette impasse sans doute idiote, ce serait super

    Merci!

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void textBox1_KeyDown(object sender, KeyEventArgs e) {
       if (e.Alt && e.KeyCode == Keys.F1) {
          chxBox1.Checked = !chxBox1.Checked;
       }
    }
    En appuyant sur ALT+F1 (erreur de typo ? je connais pas la touche D1), la case est cochée si elle ne l'est pas, et décochée si elle était cochée (pas très français cette phrase ).

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    (erreur de typo ? je connais pas la touche D1)
    C'est la touche 1 au-dessus des lettres (pas celle du pavé numérique)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour ton aide! Il me semblait aussi manquer une petite notion quelque part

    EDIT: Hmm... Une toute petit dernière chose... Serait-il possible que la touche Alt soit désactivée par défaut en combinaison avec une auctre touche? keypreview = True, mais a chaque fois que j'appuie sur Alt + 1 (ou n'importe quelle touche), le son "ding" de windows pour dire qu'il ne peut rien faire se fait entendre. Par contre, lorsque je remplace Alt par KeyCode == Keys.Space, je peux appuyer sur espace et la case va se cocher :S

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Citation Envoyé par tomlev Voir le message
    C'est la touche 1 au-dessus des lettres (pas celle du pavé numérique)
    Merci pour la précision, j'avais pas vérifier l'enum et j'avais jamais utilisé cette valeur .

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Citation Envoyé par PatouPower Voir le message
    Merci beaucoup pour ton aide! Il me semblait aussi manquer une petite notion quelque part

    EDIT: Hmm... Une toute petit dernière chose... Serait-il possible que la touche Alt soit désactivée par défaut en combinaison avec une auctre touche? keypreview = True, mais a chaque fois que j'appuie sur Alt + 1 (ou n'importe quelle touche), le son "ding" de windows pour dire qu'il ne peut rien faire se fait entendre. Par contre, lorsque je remplace Alt par KeyCode == Keys.Space, je peux appuyer sur espace et la case va se cocher :S
    Essaye de passer e.Handled à true après avoir modifier le CheckBox, ce qui permet de dire que l'event a été traité et qu'il n'est pas nécessaire de continuer à le propager (jusqu'au gestionnaire Windows). Sinon, je ne crois pas que Space soit une touche comme Alt / Shift pour laquelle on peut savoir l'état. Il faut bidouiller avec KeyDown / KeyUp.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Argh, je crois que je me suis mal exprimé dans mon texte, désolé :S

    Je voulais dire que la case ne se coche même pas quand j'appuie sur Alt + 1. À la place, je n'entend que la petite sonnette d'erreur... Alors je me disais que la touche Alt était peut-être désactivée par défaut à quelque part, sinon, je n,ai aucune idée...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Quelqu'un a-t-il une idée du pourquoi le ALT ne marche toujours pas? J'ai cherché mais je ne trouve pas...

    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
        private void keyEvent_KeyDown(object sender, KeyEventArgs e)
            {
     
        if (chkChoix2.Focused && e.KeyCode == Keys.Space)
            {
            chkChoix2.Checked = !chkChoix2.Checked;
            }
     
        if (e.Alt && e.KeyCode == Keys.D1)
            {
            chkChoix1.Checked = !chkChoix1.Checked;
            }
     
        if (e.Alt && e.KeyCode == Keys.D2)
            {
            chkChoix2.Checked = !chkChoix2.Checked;
            }
     
            }
    Merci!

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Le code qui permet de check/uncheck avec la barre d'espace en fonction du focus est inutile, c'est le comportement classique "built-in" des CheckBox en WinForms. Si un CheckBox a le focus et que l'utilisateur appuie sur la barre d'espace, le CheckBox change tout seul de valeur. De plus, avec le bon ordre dans les TabStop, l'utilisateur peut naviguer d'un CheckBox à l'autre avec Tab. Tab+Space c'est plus simple que Alt+D[numéro de la CheckBox] à mon sens.

    "e.Alt && e.KeyCode == Keys.D1" fonctionne chez moi mais effectivement, il y a un "bip" Windows quoiqu'on fasse (même avec la proposition e.Handled = true). Pour ne plus avoir de "bip", j'ai utilisé un MenuStrip, sa propriété Visible à false (invisible donc) et la propriété ShortcutKeys (cette propriété permet de définir Alt+1 mais pas spécifiquement Alt+D1 malheureusement). Sans rien mettre dans le Click du MenuStrip et en conservant le KeyDown d'avant, le "bip" a disparu ... , pas seulement pour D1 mais pour les suivants aussi (sauf D6 (?))...

Discussions similaires

  1. [JSP]checkbox
    Par orisis dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 16/04/2013, 13h53
  2. [VB.NET] Insérer une colonne de CheckBox dans un DataGrid
    Par Manue.35 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/05/2003, 11h44
  3. Checkbox
    Par rgarnier dans le forum XMLRAD
    Réponses: 11
    Dernier message: 06/03/2003, 10h48
  4. Couleur d'un CheckBox
    Par benj63 dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/07/2002, 14h48
  5. CheckBox en Read Only
    Par MrJéjé dans le forum C++Builder
    Réponses: 7
    Dernier message: 23/06/2002, 15h00

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