Problem:
There is a TreeView control with n number of nodes. When the user right clicks on the TreeView control, get the node on which the right click was performed.
Background:
In TreeView control, SelectedNode property is set whenever left click occurs. This is not true for right clicks. So, we need to have some workaround for this.
Solution 1:
The most popular solution is to handle the MouseDown event. Check if the click was a right click and then use the TreeView control’s GetNodeAt API to get the node which was clicked at.
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode selectedNode = treeView1.GetNodeAt(e.X, e.Y);
MessageBox.Show("You clicked on node: " + selectedNode.Text);
}
}
Solution 2:
Handle the NodeMouseClick event. The TreeNodeMouseClickEventArgs has the node which was clicked at.
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
MessageBox.Show("You clicked on node: " + e.Node.Text, "Solution 2");
}
}
SelectedNode property of a treeview is set whenever a left click occurs. Why can’t the same be applied for right click? Right click on a treeview is such a common UI event, that users will benefit from it.
Excellent explanation and solutions. I wish Microsoft would just make a NodeMouseRightClick() event but until they do, this is the next best thing.
“SelectedNode property of a treeview is set whenever a left click occurs. Why can’t the same be applied for right click?”
This would cause an inconsistency for instance when you display a context menu and the user cancels the menu.
I need to thank you very much and need to tell you that I’m use this code to select not in right and left click
Me.TreeView1.SelectedNode = e.Node
Excellent !! Thank you.
we simply need to handle the NodeMouseClickEvent.
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
this.treeView1.SelectedNode = e.Node;
}
}
Hello webmaster
I would like to share with you a link to your site
write me here preonrelt@mail.ru
Hi! I was surfing and found your blog post… nice! I love your blog.
Cheers! Sandra. R.
The exemple is fine for a WPF application but it doesn’nt work for a .Net application. That TreeNodeMouseClickEventArgs e) doesn’t exist.
http://bytes.com/topic/c-sharp/answers/526193-treeview-right-click-not-selected
For .NET users (solution to the same problem)
Excelent and usefull post, made my life a lot easier with the use of context windows, exactly what I was looking for
I want open a menu (example : “Open”;”Exit”) after right click on treeview .
How to do it?
Thanks!
Cudos to Emil Essa…
Just use E….e’s are good…as the old song says..
Thanks for these simple solutions to the right-click issue I was having with a treeview.
odktMJ http://gdjI3b7VaWpU1m0dGpvjRrcu9Fk.com
A lovely sunny day here on the Wirral peninsula.
I like watching TV Bbw Top Models
>:-[
Excellent work, Nice Design http://otyfirehuruj.de.tl japanese younger model i’ve been a fan of shyla since the first time i saw her, but i don’t think i’ve ever seen her look so good. she looks absolutely amazing in this video.
A pension scheme http://nusoetogimyc.de.tl little lolta sex she gets a nice fat cock and loving it, look how he can slide in, would love to try that cock
IS is code of WPf or Windows Application????????????????
I am really enjoying the theme/design of your site. Do you ever run into any internet browser compatibility issues? A few of my blog visitors have complained about my website not working correctly in Explorer but looks great in Chrome. Do you have any recommendations to help fix this issue?