2009-08-21 7 views
0

J'ai un contrôle TreeView winforms qui vous permet de parcourir une hiérarchie d'objets. Incidemment, il existe des références circulaires entre les objets.Comment annuler un WinForms TreeView ExpandAll?

Je n'ai aucun problème à laisser l'utilisateur naviguer dans les références circulaires, mais je souhaite empêcher l'exécution d'une commande de touches '*' ou ExpandAll().

Comment allez-vous faire cela?

Répondre

0

Pour la méthode ExpandAll, vous ne pouvez pas simplement traiter comme un appel récursif à Expand et son non-virtuel de sorte que vous ne pouvez même pas l'ignorer.

En ce qui concerne la prévention de la touche « * », vous pouvez brancher dans l'événement OnKeyDown de l'arborescence et annuler la clé en utilisant le code suivant:

private void treeView1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Multiply) 
    { 
     e.Handled = true; 
     e.SuppressKeyPress = true; 
    } 
} 

un coffre-fort-garde, vous pouvez regarder dehors pour récursivité votre contrôleur/présentateur/modèle de vue et ne permettent qu'un certain nombre de récursions, par exemple 4.

Questions connexes