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 :

Simuler CapsLock et NumLock


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut Simuler CapsLock et NumLock
    Bonjour,

    Je n'arrive pas à faire simuler le CapsLock et le NumLock en C#. Je voudrais quand l'utilisateur coche sur un checkbox " forcer les libellés en majuscules", l'écriture soit en majuscule ou en minuscule automatiquement sans appuyer sur les touches CapsLock et NumLock.

    J'ai beau cherché des informations mais je n'arrive pas à faire marcher les codes que j'ai trouvé sur google ou sur mdsn.

    Pouvez-vous m'aider ?
    Merci d'avance,
    Gwen Zephyr.

  2. #2
    Membre éclairé Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut
    il paret que tu n'as pas bien googler
    regarde ça:
    http://www.geekpedia.com/Question122...Lock-keys.html

  3. #3
    Membre éclairé Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut
    désolé pour la faute
    le code présenté montre l'état de la cap mais il la change pas
    mais ceci est un code qui marche mais il y a un problème (le led de la cap ne s'allume 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     [DllImport("user32.dll")]
    private static extern int GetKeyboardState(ref byte pbKeyState);
    [DllImport("user32.dll")]
    private static extern int SetKeyboardState(byte[] lppbKeyState);
            bool active = false;
            private const int VK_CAPITAL = 0x14;
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (active == false)
                {
                    byte[] keyState = new byte[256];
     
                    GetKeyboardState(ref keyState[0]);
                    keyState[VK_CAPITAL] = 1;
                    SetKeyboardState(keyState);
                    active = true;
                }
                else
                {
                    byte[] keyState = new byte[256];
     
                    GetKeyboardState(ref keyState[0]);
                    keyState[VK_CAPITAL] = 0;
                    SetKeyboardState(keyState);
                    active = false;
                }
            }
    on peut corriger sa si on veut
    il faut chercher c tt

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut
    Citation Envoyé par salihovic Voir le message
    désolé pour la faute
    le code présenté montre l'état de la cap mais il la change pas
    mais ceci est un code qui marche mais il y a un problème (le led de la cap ne s'allume 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     [DllImport("user32.dll")]
    private static extern int GetKeyboardState(ref byte pbKeyState);
    [DllImport("user32.dll")]
    private static extern int SetKeyboardState(byte[] lppbKeyState);
            bool active = false;
            private const int VK_CAPITAL = 0x14;
            private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (active == false)
                {
                    byte[] keyState = new byte[256];
     
                    GetKeyboardState(ref keyState[0]);
                    keyState[VK_CAPITAL] = 1;
                    SetKeyboardState(keyState);
                    active = true;
                }
                else
                {
                    byte[] keyState = new byte[256];
     
                    GetKeyboardState(ref keyState[0]);
                    keyState[VK_CAPITAL] = 0;
                    SetKeyboardState(keyState);
                    active = false;
                }
            }
    on peut corriger sa si on veut
    il faut chercher c tt
    Finalement, j'ai réessayé ce code. Ca a marché !!!!
    Ce code ressemblait beaucoup à celui que j'avais trouvé sur le net et ton code marche mieux que l'autre.
    Merci beaucoup salihovic !

  5. #5
    Membre éclairé Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut
    Citation Envoyé par GwenZephyr Voir le message
    Finalement, j'ai réessayé ce code. Ca a marché !!!!
    Ce code ressemblait beaucoup à celui que j'avais trouvé sur le net et ton code marche mieux que l'autre.
    Merci beaucoup salihovic !
    c bien donc
    j'ai réussi a aider quelqu'un sur ce forum

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Citation Envoyé par salihovic Voir le message
    j'ai réussi a aider quelqu'un sur ce forum
    Faudrait que ça devienne une habitude

  7. #7
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Dans l'évent TextChanged de ta zone de saisie, tu récupères ce qu'a insérer l'utilisateur et tu fais un ToLower ou ToUpper en fonction de l'état de ta checkbox.

  8. #8
    Membre éclairé Avatar de salihovic
    Inscrit en
    Février 2007
    Messages
    255
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 255
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Dans l'évent TextChanged de ta zone de saisie, tu récupères ce qu'a insérer l'utilisateur et tu fais un ToLower ou ToUpper en fonction de l'état de ta checkbox.
    c'est une idée mais je pense qu'il veut simuler l'état du bouton non???

  9. #9
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Citation Envoyé par salihovic Voir le message
    c'est une idée mais je pense qu'il veut simuler l'état du bouton non???
    Non, en .net tu n'est pas senser être obliger de jouer avec l'API win32.
    La meilleur solution est de mettre le CharaterCasing à upper ou lower tout dépendant de l'état de ta checkbox

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 12
    Par défaut
    Merci pour vos réponses !!!

    salihovic :

    J'ai déjà utilisé ce code qui marche très bien mais le problème est que je ne peux pas remettre le NumLock.

    shwin & Thomas Lebrun :

    J'ai déjà pensé à mettre toUpper ou toLower mais il y a tellement de champs de textes dans mon application que je ne vais pas mettre ce code à chaque fois.

    Pourquoi compliquer alors qu'on peut faire simple ?

  11. #11
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    c'est pour cela qu'on peut se créé un component qui hérite de textbox. De cette facon tu peux encapsuler ton code a une seule place. Et tu utilise ton component au lieux d'utiliser celui de dotnet

  12. #12
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Bonjour,

    Tu peux utiliser une boucle foreach pour changer la valeur propriété CharaterCasing de tes controls que tu mets à Upper.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    foreach(Control item in this.Controls)
    {
         if(item is TextBox)
         {
             item.CharacterCasing = CharacterCasing.Upper;
         }
    }

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

Discussions similaires

  1. Probleme Voyageur de Commerce - Recuit Simulé
    Par dinver dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/06/2009, 23h26
  2. Développpement d'une application de simulation .....
    Par dada5455 dans le forum OpenGL
    Réponses: 6
    Dernier message: 14/12/2003, 11h27
  3. simuler l'execution d'un message
    Par gaut dans le forum C
    Réponses: 14
    Dernier message: 25/07/2003, 00h01
  4. Simuler un coup de molette sur un memo...
    Par dynobremo dans le forum Composants VCL
    Réponses: 2
    Dernier message: 28/02/2003, 12h31
  5. Simulation de transmission de paquet entre différent réseaux
    Par MelloW dans le forum Développement
    Réponses: 2
    Dernier message: 12/07/2002, 20h51

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