Raccourcis clavier

cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008 - 20 nov. 2006 à 19:55
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 21 nov. 2006 à 01:30
Bonjour,

Je cherche à détecter l'événement "un bouton du clavier enfoncé" alors que le focus de mon application est sur un composant Panel. Pour ce contrôle il ne semble pas y avoir d'événement correspondant. Sauriez-vous comment faire ? Est-il possible de détecter cet événement indépendamment du contrôle sur lequel on a le focus ?

Merci d'avance pour votre aide.

Mathmax

5 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 nov. 2006 à 20:38
Salut,

Un panel ne pouvant pas réellement prendre le focus, c'est normal.
Si tu parles de gérer les évènements au niveau du formulaire, regarde du côté de la propriété KeyPreview.

/*
coq
MVP Visual C#
CoqBlog
*/
0
cs_mathmax Messages postés 403 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 31 août 2008
20 nov. 2006 à 21:35
Ca marche très bien sauf que je n'arrive pas à capter les appuis sur les flèches directionnelles. Sais-tu pourquoi ? S'agit-il de touches résérvées ? Peut-on les redéfinir ?

Mathmax
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
20 nov. 2006 à 23:13
Je ne sais pas trop...
Au pire regarde du côté des filtres de messages (AddMessageFilter & co), en filtrant suivant le fait que la cible du message soit un contrôle dans la hiérarchie du Form visé, tu devrais pouvoir en tirer quelquechose, mais vérifie bien qu'il n'y ai pas d'autre possibilité avant.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
21 nov. 2006 à 01:22
Salut,

les touches directionelles permettent de "faire naviguer le focus".

Si tu as des contrôles qui prennent le focus dans ta forme, mets KeyPreview à true et intercepte les touches spéciales en overridant la méthode ProcessCmdKey, comme ici :

http://www.csharpfr.com/infomsg_INTERCEPTER-TOUCHES-CLAVIER_724610.aspx

C'est possible aussi au niveau du panel :

private class MyPanel : Panel
{
    protected override bool ProcessCmdKey( ref Message msg, Keys keyData )
    {
        switch ( keyData )
        {
            case Keys.Right :
            case Keys.Left :
            case Keys.Up :
            case Keys.Down :
                MessageBox.Show( keyData.ToString( ) );
                return true;
        }


        return base.ProcessCmdKey( ref msg, keyData );
    }
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
21 nov. 2006 à 01:30
... Si tu as vraiment seulement un panel vide sur ta forme, c'est que tu utilises (On)KeyPress au lieu de (On)KeyDown.
0
Rejoignez-nous