2009-06-26 4 views
0

J'ai une simple application Windows de formulaire, sur lequel j'ai mis un contrôle personnalisé pour ma tâche spécifique, j'ai écrit le gestionnaire KeyDown pour le formulaire, le problème est que le gestionnaire KeyDown fonctionne bien avec chaque touche autre que les touches de flèches ... Le contrôle ne parvient pas au gestionnaire de clés? pourquoi c'est ainsi? quand je supprime le contrôle personnalisé, il commence à bien fonctionner?Je rencontre un problème avec les événements Keyboard capture en C#

+0

Où est le focus actuel, quel contrôle l'a-t-il? – Fredou

Répondre

1

Jetez un oeil à this SO question.

KeyPreview est-il activé? Quel contrôle a le focus?

+0

oui le KeyPreview est activé pour le formulaire, et mon contrôle personnalisé a le focus, mais pourquoi il ne capture pas les touches fléchées seulement? il fonctionne bien avec toutes les autres touches, une chose que j'ai remarqué que l'événement KeyUp est déclenché, mais pas le clavier ... –

+0

Avez-vous suivi le lien? Votre contrôle personnalisé contient-il une zone de texte? – stevehipwell

0

Je ne vois pas la raison pour laquelle forme pas les touches fléchées aperçu. Mais de toute façon, si vous avez besoin d'un accès bas niveau à la gestion du clavier (en particulier la gestion des raccourcis), vous pouvez remplacer le formulaire ProcessCmdKey.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Left) 
    { 
     // your code here 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
0

Vous devriez vous concentrer quelque part dans le code pour utiliser correctement ProcessCmdKey.