2010-08-06 3 views
1

Lorsque TreeView (WinForms) a le focus appui sur la touche sélectionne le nœud dont le texte commence par un personnage clé.nouveau nœud sur appuyer sur la touche dans TreeView

Y at-il un moyen d'éviter cela?

La première chose qui me vint à l'esprit était de créer de contrôle qui hérite de TreeView, et passer outre IsInputKey pour qu'il retourne faux dans tous les cas indésirables.

Mais cela ne fonctionne pas. Est-il possible de contourner ce comportement?

Répondre

2

Définissez le e.Handled = true; dans les deux événements keyup & keypress.

0

Je pense avoir trouvé un travail possible autour de (mais pas élégant et pas idéal)

Donc, je vérifie l'événement KeyDown, et si cela arrive j'enregistre le noeud sélectionné dans une variable.

Après que l'événement AfterSelect En fait, je sélectionnez à nouveau ce nœud.

Si quelqu'un a une solution plus élégante, il serait le bienvenu.

+0

J'ai également trouvé que la définition de e.SupressKeyPress à vrai sur les événements KeyDown, mais ce n'était pas une bonne solution pour mon application. –

2

Pour les événements KeyPress et KeyDown du TreeView (non la forme) la mise en œuvre

e.Handled = false;

bloquera la sélection du noeud. De plus, ces événements ne seront déclenchés que lorsque TreeView est déjà ciblé. Et cela ne bloquera pas la clé d'espace.

Questions connexes