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 :

[C#] KeyDown 2 touches ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut [C#] KeyDown 2 touches ?
    Bonjour,

    j aimerai savoir si dans le KeyDown on peux gerer le down de 2 touche simultanées.
    gauche et haut par exemple (dans le but de faire avancer un perso bitmap sur une map en diagonal)

    D'avance merci

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Euh bonne question ...

    une solution pas top est de traiter l'évement KeyDown et KeyUp .....
    Mais bon c'est pas le top du tout ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    c est que j ai essayer de faire
    a la compilation ca passe mais apres ca ne fais rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(e.KeyCode==Keys.Up && e.KeyCode==Keys.Left)
    {
    MessageBox.Show("ok");
     
    }

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    nan t'as pas compris .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Keys actuel1,actuel2;
     
    private void OnKeyPress(...)
    {
    actuel1 = e.KeyCode;
     
    }
     
    private void OnKeyUp(...)
    {
    actuel2 = e.KeyCode;
    maFonctionDeTraitement();
    }
    Ici les ... remplace les para des fonctions .

    Le probleme auquel je viens de penser c'est que ça passera pas ... tout simplement parce que c'est la meme touche qui va renvoyer et l'évenement OnKeyDown et OnKeyUp

  5. #5
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Je sais qu'avec C++Builder ça se fait sans probleme mais je trouve pas d'équivalent en C# .....

    Si tu veux le code C++ je peux te le donner mais il ne compile qu'avec C++Builder.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    ha j ai encore mis le doigt sur un truc qui va etre penible lol

  7. #7
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    lol oui c'est bien possible .... pas de chance.

  8. #8
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Salut

    J'avais fait une recherche il y a un petit moment de cela et seul direct input (inclus dans directX) est capable de déceler la pression de deux touches simultanement (autres que shift/alt/ctrl...)

    http://www.microsoft.com/downloads/details.aspx?FamilyID=b7bc31fa-2df1-44fd-95a4-c2555446aed4&DisplayLang=en

  9. #9
    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
    Autre technique:

    dans le KeyPress, tu regardes si l'utilisateur a appuyer sur une des touches que tu veux. Dns ce cas, tu retourne true.

    Ensuite, dans le Keyup, tu regarde la touche appuyée et si ta fonction precédente renvoit true, alors tu peux dire qu'il a appuyé sur les 2 touches.

  10. #10
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par morpheus
    Autre technique:

    dans le KeyPress, tu regardes si l'utilisateur a appuyer sur une des touches que tu veux. Dns ce cas, tu retourne true.
    Oui mais comment fait tu pour savoir si une touche est appuyé ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    le pb c est que mon projet doit etre realisable sans directX.
    j ai contourner le pb en me servant du pavé numerique pour gerer les deplacement

  12. #12
    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
    Citation Envoyé par dev01
    Citation Envoyé par morpheus
    Autre technique:

    dans le KeyPress, tu regardes si l'utilisateur a appuyer sur une des touches que tu veux. Dns ce cas, tu retourne true.
    Oui mais comment fait tu pour savoir si une touche est appuyé ?
    Ben, si une touche est appuyée, tu rentres dans l'evenement KeyPress....

  13. #13
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par morpheus
    Citation Envoyé par dev01
    Citation Envoyé par morpheus
    Autre technique:

    dans le KeyPress, tu regardes si l'utilisateur a appuyer sur une des touches que tu veux. Dns ce cas, tu retourne true.
    Oui mais comment fait tu pour savoir si une touche est appuyé ?
    Ben, si une touche est appuyée, tu rentres dans l'evenement KeyPress....
    Ok mais il n'y a qu'une des deux touches appuyé simultanement qui déclenchera l'événement KeyPress .

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    effectivement avec le keypresse ca marche (c un peu compliquer pour moi lol) mais ca ca marche
    merci a vous

  15. #15
    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
    Bonne nouvelle

    ps:fait profiter ton code à tout le monde, cela pourrait être utile à d'autres

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 14
    Par défaut Gestion 2 Touches Appuyees
    Bonjour a tous,
    Je reprends ce post pour le terminer comme il faut :

    Code pour récupérer l'evenement "Ctrl + touche" (ici on prends la touche F) ds un Form

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.Control && e.KeyCode == Keys.F )
    MessageBox.Show("Ctrl + F");
    }


    Code pour récupérer l'evenement "touche (laissée appuyée) + touche"

    private bool flagTouche1;

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.D)
    flagCtrl = true;

    if (e.KeyCode == Keys.F && flagTouche1)
    MessageBox.Show("D + F");
    }

    private void Form1_KeyUp(object sender, KeyEventArgs e)
    {
    if (e.KeyCode == Keys.D)
    flagTouche1 = false;
    }

    Voila, enjoy !!

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

Discussions similaires

  1. [Snow Leopard] Bind/Raccourcis Clavier pour touche KeyUp et KeyDown
    Par kOrt3x dans le forum Apple
    Réponses: 2
    Dernier message: 29/03/2011, 23h02
  2. KeyUp, KeyDown et touche entrée / espace.
    Par Noobboy dans le forum Silverlight
    Réponses: 8
    Dernier message: 19/05/2009, 11h05
  3. KeyDown et touches directionnelles
    Par Risike dans le forum Windows Forms
    Réponses: 8
    Dernier message: 22/05/2008, 11h15
  4. Comment utiliser keydown avec trois touches ou plus
    Par pedro85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/10/2007, 16h32
  5. Réponses: 12
    Dernier message: 06/10/2006, 09h26

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