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
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
Euh bonne question ...![]()
une solution pas top est de traiter l'évement KeyDown et KeyUp .....
Mais bon c'est pas le top du tout ...
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"); }
nan t'as pas compris .
Ici les ... remplace les para des fonctions .
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(); }
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
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.
ha j ai encore mis le doigt sur un truc qui va etre penible lol
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
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.
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Oui mais comment fait tu pour savoir si une touche est appuyé ?Envoyé par morpheus
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![]()
Ben, si une touche est appuyée, tu rentres dans l'evenement KeyPress....Envoyé par dev01
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Ok mais il n'y a qu'une des deux touches appuyé simultanement qui déclenchera l'événement KeyPress .Envoyé par morpheus
effectivement avec le keypresse ca marche (c un peu compliquer pour moi lol) mais ca ca marche
merci a vous
Bonne nouvelle
ps:fait profiter ton code à tout le monde, cela pourrait être utile à d'autres![]()
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
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 !!![]()
Partager