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
Version imprimable
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 ... :wink:
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:
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:
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
lol oui c'est bien possible .... :? pas de chance.
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.
Oui mais comment fait tu pour savoir si une touche est appuyé ?Citation:
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....Citation:
Envoyé par dev01
Ok mais il n'y a qu'une des deux touches appuyé simultanement qui déclenchera l'événement KeyPress .Citation:
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 :wink:
ps:fait profiter ton code à tout le monde, cela pourrait être utile à d'autres :wink:
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 !! :)