Keydown

Signaler
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006
-
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006
-
Salut, j'aimerai que quand j'appuie sur la touche p, mon programme se met
en pause (la pause est représentée par form3) et que quand je rappuie sur p le
jeu se remet en route la où il s'était arréter. J'ai donc utilisé un keyDown comme
ceci :
private void Form2_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

{
if (e.KeyCode == Keys.Pause)
{
Form3 form3 = new Form3();
form3.ShowDialog();
}
}

Le prob, c'est que j'appuie une foi quan je sui dan ma form2 mais, il ne l'affiche même pas et me réaffiche la form1. je sais pas comment faire ??

K.bitnik

11 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Salut,

Si tu veux utiliser P il faut mettre Keys.P au lieu de Keys.Pause non ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

J'ai essayé les 2 mais ça fait exactement la même chose, il ne m'affiche pa du tout la form3, quitte la form2 et remet la form1.
pourtant tout ce que je veux faire c'est appuyer sur "p" pour qu'il lance la form3 et qu'il suspen la form2(qu'il fait une pause quoi) et puis que quand je rappuie sur "p" il me quitte la form3 et remet la form2 comme elle était avant d'avoir fait pause. Le problème c'est que je ne sais pas comment faire !

K.bitnik
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
As tu affecter true à la propriété KeyPreview de ton instance de Form2 ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

je vien de le faire mais ça fait toujours pareil ! j'ai remplacé form3.showdialog(); par form3.show(); ça ne fait pas pareil (quand j'appuie sur p, ça affiche la form1 mais ça laisse derriere la form2) c un bordel !
peut-etre qu'il affiche la form3 mais je n'ai peut-etre pas le temps de la voir ?? je ne sais pas ?
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Avec ShowDialog normalement non.
Je ne vois pas pourquoi ça fait ça.

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

c pareil ! j'ai fait ça, ça fonctionne mais le problème c'est qui recharge ma form2 et moi je ne veux pas. En faite je fais un jeu donc les compteurs sont en route, je joue, j'appuie sur "p" pour faire pause ça va mais quand je reviens a ma form2 elle se remet au début, tout recomence a 0. C'est pas ce que je veux !! Comment je pourrai faire ça ??
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
39
Il est entier ton extrait de code, y'a pas une branche else ou autre chose qui referme ta form ? Il faut peut etre mieux utiliser OnKeyUp ( form_KeyUp ), dans un OnKeyDown une simple pression peut appeler des centaines de fois l'evenement !
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

J'ai juste mis dans ma form3 ceci :
private
void Form3_OnKeydown(
object
sender, System.Windows.Forms.KeyEventArgs e)
{

if (e.KeyCode == Keys.P)
{
Form3.ActiveForm.Close();
}
}

Mais je sais pas comment faire là, depuis hier soir je suis bloqué. En faite je voudrais que quand j'appuie sur "p" 'il ne me ferme pas la form2 il ouvre la form3 et quand je rappuie il ferme la form3 et me réouvre la form2 mais sans la recharger.
Ou alor il y a une autre possibilité, c'est de cacher la form2, de lancer la form3 et quand je rappui sur "p" ça me ferme la form3 et me remontre la form2 tél quél était avant que je fasse pause.
Pfffff, je sais pas, j'ai essayé plein de truc mais rien ne va !
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Euh, pourquoi tu utilises Form3.ActiveForm.Close(); et non pas tout simplement Form3.Close(); ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
93
Oups, je me suis trompé :
Euh, pourquoi tu utilises Form3.ActiveForm.Close(); et non pas tout simplement this.Close(); ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
Messages postés
125
Date d'inscription
mercredi 15 novembre 2000
Statut
Membre
Dernière intervention
2 mars 2006

ça yé, j'ai enfin trouvé. Dans ma form2 j'ai mis :
private
void Form2_OnKeyDown(
object sender, System.Windows.Forms.KeyEventArgs e)
{
Form3 form3 =
new Form3();

if (e.KeyCode == Keys.P)
{
Form1.ActiveForm.Hide();
form3.Show();
}
}

et dans la form3 :

private
void Form3_OnKeydown(
object sender, System.Windows.Forms.KeyEventArgs e)
{

if (e.KeyCode == Keys.P)
{

this.Close();
Form2 form2 =
new Form2();
form2.ShowDialog();
}
}

Là, quand on fait pose cela recommence tout depuis le début, j'ai simplement mi ma variable en static public et maintenant ça marche !!
Merci pour tout

K.bitnik