2010-09-07 15 views
2

J'ai un contexte menuStrip associé à une arborescence.ContextMenuStrip perd le focus d'un élément dans l'arborescence s'il est cliqué avec le bouton droit

Maintenant, par exemple, j'ai quatre nœuds dans l'arborescence et le nœud 4 est sélectionné.

Comportement: ContextMenuStrip - Lorsque u clic droit sur le nœud 2, ce nœud est sélectionné et que dès que la bande de menu contextuel ouvre, l'accent va vers le noeud 4.

Avec ancien composant « Contexte Menu 'cette fonctionnalité fonctionne bien, c'est-à-dire que le nœud 2 a le focus jusqu'à ce que le menu contextuel de l'heure soit ouvert.

Je souhaite que le nœud 2 soit sélectionné tant que le menu contextuel est ouvert. Et la sélection/mise au point doit revenir au nœud 4 lorsque le menu contextuel est fermé.

Demande s'il vous plaît conseil.

Merci et meilleures salutations Sumit

Répondre

1

Oui, le contrôle TreeView est assez squameuse lorsque l'accent est modifié alors que l'un de ses événements est exécuté. C'est l'une des raisons pour lesquelles elle distingue les événements BeforeXxxx et AfterXxxx. Malheureusement, la bande de menu contextuel est affichée trop tôt. La solution consiste à afficher vous-même le menu contextuel en implémentant l'événement NodeMouseClick. Comme ceci:

private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { 
     if (e.Button == MouseButtons.Right) { 
      treeView1.SelectedNode = e.Node; 
      contextMenuStrip1.Show(treeView1, e.Location); 
     } 
    } 

Je vais laisser la mise au point par la suite à vous. Cela n'a pas beaucoup de sens de l'implémenter.

+0

Merci pour vos commentaires. – Sumit