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 :

Textbox multiple keydown


Sujet :

Windows Forms

  1. #1
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut Textbox multiple keydown
    Bonjours,

    Je cherche à détecter des combinaisons du genre "CTRL + b" dans un textbox.

    J'ai fait çà mais çà ne fonctionne pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            private void txtContent_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
            {
     
                string temp;
                if (e.Key == Key.A && e.Key == Key.B)
                    temp = "coucou";
            }
    Quelqu'un sait il comment on gère plusieurs keypress?

  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 195
    Points
    5 195
    Par défaut
    salut

    oui, c'est relativement simple...

    Les touches systèmes peuvent etre "combinées" avec les touches classiques. Ainsi, tu as un booléen qui te dit si "Control" ou "shift" ou "Alt" est appuyé.

    Par contre, si tu veux tester que "A" et "B" sont appuyés, tu ne peux pas directement avec le code que tu as fait

    Une solution simple consiste à mémoriser un état sous forme d'un booléen. Genre, IsAPressed = true quand A est appuyé, idem pour les autres touches... et après, dans le KeyUp, remettre ce booléen dans l'état qui convient.

    Après, la logique des actions ne devrait pas être dans le KeyPress, Down ou Up, mais ailleurs pour etre indépendant et plus simple à gérer
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Ok je vais tester comme cela.
    Merci

  4. #4
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    J'ai fait ca mais ca ne marche pas, ca le touche CTRL reste toujours appuyé alors ca ne détecte pas l'autre lettre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
                if (e.Key == Key.LeftCtrl)
                    IsCtrlKeyPressed = true;
     
                if (IsKeyboardFocused)
                {
                    if (e.Key == Key.I)
                        txtContent.FontStyle = FontStyles.Italic;
     
                    if (e.Key == Key.B)
                        txtContent.FontStyle = FontStyles.Italic;
     
                    IsCtrlKeyPressed = false;
                }
    Comment je peux gérer ca dans une autre fonction?

  5. #5
    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 195
    Points
    5 195
    Par défaut
    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
    private bool controlOn = false;
            private bool useBKey = false;
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control)
                {
                    controlOn = true;
                }
                if (e.KeyCode == Keys.B)
                {
                    useBKey = true;
                }
                TreatKeyboard();
            }
     
            private void TreatKeyboard()
            {
                if (controlOn && useBKey)
                {
                    textBox1.Text = "sarkozy, je te vois";
                }
            }
    Ca devrait le faire ? non ?
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  6. #6
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Ok je vais tester tout à lh'eure.

    Il y a une différence entre
    et
    Parce que dans le code que tu fais (je crois sans avoir essayé), on est obligé de ne plus appuyer sur CTRL et ensuite appuyer sur 'B' pour que ca fonctionne.

  7. #7
    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 195
    Points
    5 195
    Par défaut
    le code est un exemple rapide

    Il faut bien sur dans un KeyUp, remettre les booléens à false suivant l'état
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  8. #8
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Citation Envoyé par theMonz31 Voir le message
    le code est un exemple rapide

    Il faut bien sur dans un KeyUp, remettre les booléens à false suivant l'état
    Oui pas de probleme pour le keyUp mais ca ne fonctionne pas comme je le pensais.


    Le code marche dans le cas ou tu appuies sur CTRL, relaches et tu appuies ensuite sur B, la ca marche.

    Mais ce n'est pas le résultat souhaité.

  9. #9
    Membre averti Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Points : 309
    Points
    309
    Par défaut
    Apparemment il faut utiliser: GetAsyncKeyState
    J'ai pas encore compris comment l'utiliser.

  10. #10
    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 195
    Points
    5 195
    Par défaut
    avec le code envoyé, quand je fais Ctrl-B, j'ai bien mon texte d'affiché !
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

Discussions similaires

  1. selection multiple datagridview form2 -> textbox form1
    Par Codename dans le forum Windows Forms
    Réponses: 13
    Dernier message: 26/05/2013, 15h39
  2. Réponses: 6
    Dernier message: 14/08/2012, 09h57
  3. TextBox KeyDown et les Events
    Par jp3201 dans le forum Développement Web avec .NET
    Réponses: 5
    Dernier message: 05/12/2011, 15h10
  4. [ASP.NET] TextBox et ImageButton multiples (soupir)
    Par H1B4K dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/02/2011, 17h03
  5. TextBox multiple derniere ligne en premier
    Par topolino dans le forum Windows Forms
    Réponses: 7
    Dernier message: 08/06/2009, 16h49

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