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 :

Gestion flèches clavier multi touches


Sujet :

Windows Forms

  1. #1
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut Gestion flèches clavier multi touches
    Hello,

    J'ai un problème lorsque j'essaie de gérer correctement les flèches de mon clavier. Si j'appuie sur une touche à la fois tout va bien. Mais si par exemple j'appuie sur la flèche HAUT et ensuite j'appuie sur DROITE, lorsque je relache DROITE, il ne remarque pas que HAUT est toujours pressée.

    Cela vient-il du fait que j'utilise KeyPress de mon form plutot que keydown ? y-a-t'il un moyen pour que KeyDown gère les touches fléchées ?

    Merci d'avance pour votre aide !!!

  2. #2
    Membre Expert
    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
    Par défaut
    Tu peux créer une variable par touche, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool keydown_pressed = false;
    que tu mets à jour dans les events KeyDown et 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 control_KeyDown(object sender, KeyEventArgs e) {
       if(e.KeyCode == Keys.Down) {
          keydown_pressed = true;
       }
    }
     
    private void control_KeyUp(object sender, KeyEventArgs e) {
       if(e.KeyCode == Keys.Down) {
          keydown_pressed = false;
       }
    }
    Ensuite, un timer peut checker périodiquement la valeur des touches et faire les actions en conséquences :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void TimerEvent(object sender, EventArgs e) {
        if(keydown_pressed) {
           ... traitement ...
        }
        if(keyleft_pressed) {
           ... traitement ...
        }
    }
    C'est juste une solution comme ça, je dis pas que c'est la meilleure.

  3. #3
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    Oki doki j'essayerais comme ça

    Merci !

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    C'est juste une solution comme ça, je dis pas que c'est la meilleure.
    J'ai aussi utilisé cette technique, ça me semble plutot adapté dans des projets ne nécessitant pas des performances critiques.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    La pour le moment je travaille sur le form directement avec un double buffer. Je compte utiliser éventuellement directx, est-ce que ça change le problème ? Directx me fournit-il d'autre methode pour la gestion des touches ?

    Merci d'avance

  6. #6
    Membre Expert
    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
    Par défaut
    C'est également un Acquire périodique en DirectX.

Discussions similaires

  1. Réponses: 15
    Dernier message: 23/02/2006, 15h53
  2. Gestion du clavier
    Par Ekinoks dans le forum OpenGL
    Réponses: 12
    Dernier message: 22/08/2005, 14h36
  3. gestion du Clavier
    Par benthebest dans le forum MFC
    Réponses: 13
    Dernier message: 07/05/2005, 22h39
  4. [MX]Optimisation de la gestion du clavier
    Par yacinechaouche dans le forum Flash
    Réponses: 8
    Dernier message: 18/04/2004, 02h13

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