Fare clic con il tasto destro del mouse su. AlberoNodo

Sto cercando di mostrare un menu popup sulla mia vista ad albero quando gli utenti fanno clic con il pulsante destro del mouse, consentendo loro di scegliere azioni sensibili al contesto da applicare al nodo selezionato.

Al momento l’utente deve fare clic sul nodo del clic sinistro e quindi fare clic con il pulsante destro del mouse per scegliere.

È ansible fare clic con il tasto destro su un nodo per selezionare quel nodo e, in tal caso, qual è il metodo migliore per farlo.

Sia il clic sinistro che quello destro triggersno un evento click e causano la modifica della selezione. Tuttavia, in determinate circostanze (che non ho ancora preso la briga di rintracciare) la selezione cambierà dal nodo che è stato fatto clic con il tasto destro sul nodo selezionato inizialmente.

Per fare in modo che il clic con il tasto destro cambi la selezione, puoi forzatamente modificare il nodo selezionato usando l’evento MouseDown :

 treeView.MouseDown += (sender, args) => treeView.SelectedNode = treeView.GetNodeAt(args.X, args.Y); 

Un po ‘meglio, come indicato da uno degli altri utenti, è utilizzare l’evento NodeMouseClick :

 treeView.NodeMouseClick += (sender, args) => treeView.SelectedNode = args.Node; 

sì. Qui è l’elaborazione per NodeMouseClick evento NodeMouseClick :

 private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { treeView1.SelectedNode = e.Node; } 

Trascina una barra del menu contestuale sul modulo quindi:

  private void treeView1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Right) { // Display context menu for eg: ContextMenu1.Show(); } }