Evenement clavier

manelfeki Messages postés 19 Date d'inscription vendredi 27 février 2009 Statut Membre Dernière intervention 21 avril 2009 - 13 avril 2009 à 19:54
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 14 avril 2009 à 18:28
Bonjour.je developpe une application en c# et je veux inserer les evenement clavier en particuliér l'evenement entrer j'aitrouver le code suivant mais ca marche pas:
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if( e.Control !null && e.KeyCode Keys.M )
{
MsgBox("Vous avez appuyé sur Ctrl + M");
}
}

Et j' ai mit l'attribut KeyPreview de la form à true mais aussi ca marche pas.
svp aidez moi et merci pour l'aide.

2 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
14 avril 2009 à 12:11
Salut

Tout d'abord, il y a une erreur dans ton code
e.Control est un bool => if(e.Control == true)

Ensuite, vu le nom de ta méthode, c'est ta Form1 qui génère l'événement. Il faut donc qu'elle ait le focus, non seulement entre les différentes fenêtres / applications, mais également entre les différents contrôles. Donc ça ne marchera généralement pas s'il y a des contrôles "focusables" sur ta fenêtre (Textbox, TabControl, Listbox...)

Krimog :
while (!(succeed = try())) ;
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
14 avril 2009 à 18:28
La propriété KeyPreview évite le problème de focus.. Je me demande si tout simplement tu n'as pas oublié d'abonner ton gestionnaire d'évenement :

public Form1( )
{
    InitializeComponent( );


    this.KeyDown += new KeyEventHandler( Form1_KeyDown );
}


private void Form1_KeyDown( object sender, KeyEventArgs e )
{
    // ..
}
0
Rejoignez-nous