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 :

Convertir Keys en char


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut Convertir Keys en char
    Bonjour,


    J'ai un souci, je n'arrive pas à convertir une valeur d'énumération Keys en caractère dans un événement KeyUp d'un datagridVieW.

    Potentiellement, je peux passer par KeyPress du datagridview qui lui me permet de récupérer la touche saisie sous forme de caractère.

    Existe t'il quand même un moyen de convertir un objet Keys en Char ?

    J'ai essayer KeysConverter mais je n'arrive pas à l'utiliser. Les caractères convertis ne sont pas corrects (exemple: $)

    Merci pour votre aide !

  2. #2
    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
    Citation Envoyé par b_lob Voir le message
    J'ai essayer KeysConverter mais je n'arrive pas à l'utiliser. Les caractères convertis ne sont pas corrects (exemple: $)
    Tu peux utiliser KeysConverter, mais il faut travailler sur e.KeyData et non sur e.KeyCode. KeyCode est la touche qui a déclenché l'évènement. KeyData est l'état de l'ensemble des touches (combinaison de valeurs de Keys)

    Mais de toutes façons il suffit de faire un cast :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char c = (char)e.KeyData;

  3. #3
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    Merci mais j'ai testé et chez moi ca ne marche pasi.

    je tape le caractere '$'

    Dans l'evenement KeyUp j'essai de retrouver ce caractere

    J'ai testé:

    Char c = Convert.ToChar(e.KeyValue);

    Char c = (Char)e.KeyData;

    et je récupère °

    La je cale..

    Merci encore pour votre aide..

  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
    Bon, après quelques tests, j'ai l'impression que j'ai dit pas mal de conneries dans mon post précédent...
    J'ai un peu essayé mais je n'arrive pas non plus à faire la conversion. Je pensais que le framework contenait des classes permettant de faire ça, mais en fait ce n'est pas le cas, parce que la conversion est déjà faite par l'OS :
    KeyDown et KeyUp correspondent aux messages WM_KEYDOWN et WM_KEYUP, qui indiquent les codes des touches, alors que KeyPress correspond à WM_CHAR, qui indique le caractère tapé.

    Si tu as besoin du caractère dans l'évènement KeyUp et non dans KeyPress, une solution serait de faire quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private char lastKeyPressed = '\0';
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        lastKeyPressed = e.KeyChar;
    }
    private void textBox1_KeyUp(object sender, KeyEventArgs e)
    {
        if (lastKeyPressed != '\0')
        {
            // faire quelque chose avec le caractère...
        }
        lastKeyPressed = '\0';
    }

  5. #5
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    Effectivement, il ne faut pas chercher à gérer autrement les touches entrées que par KeyPress pour les caractere et KeyUp/KeyDown pour récupérer les code Keys.

    Merci pour ton aide TomLev !

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

Discussions similaires

  1. Convertir String en Char
    Par El-Diablo- dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/04/2007, 17h20
  2. [SQL2K] Convertir un champ Char Vers un champ Date
    Par Sidi-Bou dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/01/2007, 08h45
  3. [unicode] Convertir CString en Char[]
    Par dacid dans le forum Visual C++
    Réponses: 7
    Dernier message: 31/05/2006, 09h22
  4. Convertir String en Char: comment?
    Par nmathon dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2005, 20h58
  5. Réponses: 13
    Dernier message: 06/03/2005, 15h21

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