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

C# Discussion :

[KeyPress] Differencier Enter et MAJ Enter


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Par défaut [KeyPress] Differencier Enter et MAJ Enter
    Bonjour à tous,
    je suis actuellement entrain de peaufiner une appli Chat en réseau en C#.
    J'aimerais que lorsque le focus est sur le textearea ou l'on écrit et que l'utilisateur appuis sur entré ceci envoi la procédure d'envoi de message.

    Pour cela j'ai fait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            private void TexteWidows_KeyPress(object sender, KeyPressEventArgs e)
            {
                char key = e.KeyChar;
                if (key.Equals('\r'))
                {
                    sendText();
                }
            }
    Bien sur ça marche bien, mais voila...

    J'aimerais aussi que l'utilisateur puisse mettre des sauts de ligne dans son message. Pour cela il doit cliquer sur le bouton Enter :s

    J'ai pensé que le programme ferais une différence entre le bouton Enter ou le couple MAJ+Enter.

    Pour reprendre le principe utilisé par MSN (enter = envoi du message ; maj + enter = saut de ligne).

    Le problème c'est que le char key = e.KeyChar; à la même valeur dans les deux cas. Si des gens on déjà eu à faire face à ce genre de situation, je suis tout à leur écoute pour voir leur solution.

    Je vous remercie d'avance.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 527
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 527
    Par défaut
    dans KeyDown et KeyUp, le paramètre de type KeyEventArgs t'indique si la touche controle, majuscule ou alt est pressée

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2005
    Messages
    131
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 131
    Par défaut
    Bonjour

    Il faut plutot ustiliser l'événement KeyUp :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void TexteWidows_KeyUp(object sender, KeyEventArgs e)
            {
     
     
                 if ((e.KeyCode == Keys.Enter) && (!e.Shift))
                    {
     
                        sendText();
     
                    }
    }

  4. #4
    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 : 43
    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
    Par défaut
    La propriété statique Control.ModifierKeys permet d'accéder à l'état des touches de modification (Shift, Ctrl, Alt). C'est une combinaison de flags de l'énumération Keys

    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
    private void TexteWidows_KeyPress(object sender, KeyPressEventArgs e)
            {
                char key = e.KeyChar;
                if (key.Equals('\r'))
                {
                    if ((ModifierKeys & Keys.Shift) == Keys.Shift)
                    {
                        // La touche Shift est enfoncée, on ajoute un saut de ligne :
                        TexteWidows.AppendText("\r\n");
                    }
                    else
                    {
                        // La touche Shift n'est pas enfoncée, on envoie le message
                        sendText();
                    }
                }
            }

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 8
    Par défaut
    Citation Envoyé par tomlev Voir le message
    La propriété statique Control.ModifierKeys permet d'accéder à l'état des touches de modification (Shift, Ctrl, Alt). C'est une combinaison de flags de l'énumération Keys

    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
    private void TexteWidows_KeyPress(object sender, KeyPressEventArgs e)
            {
                char key = e.KeyChar;
                if (key.Equals('\r'))
                {
                    if ((ModifierKeys & Keys.Shift) == Keys.Shift)
                    {
                        // La touche Shift est enfoncée, on ajoute un saut de ligne :
                        TexteWidows.AppendText("\r\n");
                    }
                    else
                    {
                        // La touche Shift n'est pas enfoncée, on envoie le message
                        sendText();
                    }
                }
            }
    En effet cette méthode fonctionne très bien !
    Merci beaucoup de votre aide, mon soucis est résolu

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

Discussions similaires

  1. Méthode keypress Enter
    Par Biggy30 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/02/2012, 02h30
  2. Différence entre Ctrl+enter et ctrl+alt+maj+s
    Par Krusti dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 26/01/2009, 10h15
  3. [Forms 9i] Enter query
    Par cosmos38240 dans le forum Forms
    Réponses: 10
    Dernier message: 04/01/2005, 16h33
  4. bouton ENTER = fermeture de l'application
    Par bigboomshakala dans le forum MFC
    Réponses: 2
    Dernier message: 10/05/2004, 11h14
  5. DoubleClick Listener & ENTER
    Par Pro_Fete dans le forum Composants
    Réponses: 4
    Dernier message: 27/01/2003, 13h23

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