2010-12-14 3 views
2

Je sais que cela peut être une réponse facile à certains d'entre vous, mais je ne sais pas comment le faire correctement. J'ai créé un éditeur de texte, qui a également une fenêtre d'accueil qui affichera les fonctions. Je l'ai mis en place dans le menu que F8 est la touche de raccourci pour montrer la fenêtre de fonction. Je voudrais également saisir l'événement KeyPress F8 pour analyser les données actuelles pour les fonctions dans le programme, mais je ne peux pas obtenir que cela se produise ..Overriding keypress

+0

ce qui est bizarre est que je peux appuyer sur l'une des touches f et rien ne se passe, mais si j'appuie sur une touche normale, il s'arrête. – mookie

+0

voir les modifications sur ma réponse – msarchet

Répondre

3

Capturez vos éditeurs de texte keyPressed événement et vérifiez la KeyEventArgs qui arrivent, puis marquer le pas traité comme fausse qui fera l'événement à passer à la commande parent:

Exemple

KeyPressed(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F8) DoSomething(); 
    e.Handled = false; 
} 

En réponse au commentaire que vous avez ajouté à votre question. Vous devrez peut-être définir les contrôles KeyPreview sur True. Je pense que KeyPreview peut être disponible uniquement au niveau du formulaire, mais je ne suis pas sûr.

+0

Je pense que vous l'avez en arrière. Définir la propriété 'e.Handled' sur true empêchera l'événement de propager l'arborescence de contrôle alors que la définition de 'e.Handled' sur false permettra aux autres contrôles de le capturer. –

+0

@Mike Webb ahhh typo dans mon explination, merci – msarchet

+0

Oh, attendez. Désolé, je pensais que tu disais le contraire. Déroutant. Peut vouloir reformuler un peu votre réponse. –

1

Mettre en place un gestionnaire d'événements pour le OnKeyPress (ou OnKeyDown ou OnKeyUp) événement, et vérifiez quelle touche a été pressée (ce sera dans les arguments de l'événement). Ensuite, vous pouvez faire ce que vous voulez.

0

Je ne suis pas sûr de tout comprendre, mais ne pouvez-vous pas utiliser le KeyPress Event disponible dans n'importe quel contrôle?

1

Je ne pense pas que la réponse étiquetée soit correcte. Le gestionnaire d'événements KeyPress ne gère pas les touches de fonction; vous devez utiliser le gestionnaire d'événements KeyUp ou la méthode ProcessDialogKey.