2017-10-17 7 views
1

J'ai un System.Windows.Forms.TreeView. L'utilisateur peut naviguer avec la souris ou le clavier. J'ai des gestionnaires d'événements pour les deux. L'événement de clic de souris fonctionne bien, mais j'ai un problème en ce que le KeyEventArg n'a aucune connaissance des noeuds dans l'arbre (comme le fait TreeNodeMouseClickEventArgs). Alors, comment le code sait-il où se trouve l'utilisateur dans TreeView lorsque vous utilisez les touches haut et bas?Comment déterminer un nœud sur TreeView sur l'événement Mouse and Key

MyView.Designer.cs

this.trvApproval.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.trvApproval_NodeMouseClick); 
this.trvApproval.KeyUp += new System.Windows.Forms.KeyEventHandler(this.trvApproval_KeyUp); 

MyView.cs

private void trvApproval_NodeMouseClick(object sender, System.Windows.Forms.TreeNodeMouseClickEventArgs eventArgs) 
{ 
    this.trvApproval.SelectedNode = eventArgs.Node; 
} 

private void trvApproval_KeyUp(object sender, System.Windows.Forms.KeyEventArgs eventArgs) 
{ 
    // No knowledge of tree in KeyEventArgs 
    if (eventArgs.KeyValue == Convert.ToChar(Keys.Down)) 
    { 
     System.Diagnostics.Trace.WriteLine("trvApproval_KeyPress Down: " + eventArgs.KeyValue); 
    } 
    else if (eventArgs.KeyValue == Convert.ToChar(Keys.Up)) 
    { 
     System.Diagnostics.Trace.WriteLine("trvApproval_KeyPress Up: " + eventArgs.KeyValue); 
    } 
} 

Répondre

1

Vous n'avez pas besoin de manipuler le clavier ou la souris d'événements, juste gérer AfterSelect cas de TreeView contrôle. L'événement se déclenche lorsque vous utilisez la souris ou le clavier pour sélectionner des nœuds. e.Node est le noeud que vous recherchez:

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    //e.Node is what you are looking for. 
} 
+0

Oic .. comment ajouter le gestionnaire d'événements? 'this.trvApproval.AfterSelect + =?' –

+0

Oui, c'est comme les autres gestionnaires d'événements. Ou utilisez le concepteur. –

+0

Je demande ce qui compléterait la déclaration dans mon commentaire précédent. –