Matt Wilko
Matt Wilko

Reputation: 27342

How can I right click to select a node in a treeview control

Why I right click on a node in my treeview the focus moves to this node and then immediately back to the previously selected node. Is there some way that I can allow the right click to select the node?

Upvotes: 15

Views: 19767

Answers (2)

Hans Passant
Hans Passant

Reputation: 942348

That's because the highlight color performs two duties, it shows the selected node and shows the focused node. If you don't do anything with the right-click event then it jumps back to the selected node. The workaround is to select the node:

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

Plus anything else you want to do, usually displaying a context menu.

Upvotes: 34

Matt Wilko
Matt Wilko

Reputation: 27342

Apologies I jumped the gun slightly I found how to do this as follows:

    Private Sub TreeView1_NodeMouseClick(sender As Object, e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick
        If e.Button = Windows.Forms.MouseButtons.Right Then
            TreeView1.SelectedNode = e.Node
        End If
    End Sub

Shouldn't the control do this as standard though?

Upvotes: 4

Related Questions