2008-12-11 6 views
0

Dans une application de boîte de dialogue simple, en utilisant le concepteur, j'ai configuré les touches de raccourci habituelles pour couper, copier, coller et supprimer dans le menu d'édition.Supprimer dans le menu Edition

Mon problème est que je veux seulement manipuler des événements de suppression quand un certain contrôle d'arbre est au foyer. Sinon, dans mon contrôle DataGrid par exemple, je veux que delete fonctionne comme d'habitude.

Quelle est la meilleure façon de faire cela? Actuellement, je reçois un événement delete dans la classe de formulaire principale, mais la clé de suppression ne fonctionne pas dans les contrôles d'édition du contrôle DataGrid.

Modifier - a précisé que la touche de suppression ne fonctionne pas dans modifier les sous-contrôles

Répondre

2

Il semble que si vous souhaitez utiliser les touches de raccourci pour les éléments de menu, keycombination est pris dans votre formulaire, peu importe si vous configurez votre eventhandler pour ne rien faire à moins qu'un certain contrôle d'arborescence soit actif (il y a aucun moyen de définir l'événement-clé comme .Handled=false). Donc, la meilleure façon serait de NE PAS définir la touche de raccourci dans la barre de menu, mais d'accrocher l'événement KeyDown sur le formulaire (keypreview) ou sur le contrôle d'arborescence spécifique et de gérer la touche de raccourci de suppression fais-y.

Si vous souhaitez afficher le texte du raccourci même si aucune touche de raccourci n'est définie dans la barre de menus, utilisez la propriété .ShortcutKeyDisplayString dans l'élément de menu pour définir un texte.

+0

C'est la meilleure réponse, bien qu'il soit probablement possible de surcharger ProcessCmdKey pour le formulaire ou la barre d'outils et d'indiquer que la clé DEL n'est pas utile si le contrôle actif est un Edit. – EricLaw

1

Si vous allez seulement avoir une forme et une seule DataGrid, la méthode la plus simple serait de tirer au large votre dataagrid supprime les événements de l'événement click appelé par votre élément de menu. Quelle que soit la ligne courante (bindingsource) ou sélectionnée (datagrid), vous pouvez supprimer par programmation.

+0

Ah, je n'étais probablement pas très clair. Ce sont les fenêtres d'édition dans le contrôle DataGrid où la clé de suppression ne fonctionne pas. Je vais éditer ma question. –

Questions connexes