TreeView double-click behaviour in .NET / C#

Ivan picture Ivan · Jan 23, 2009 · Viewed 22.9k times · Source

I have a regular .NET Windows Forms treeview control. The nodes are setup like this:

Group

---child

---child

If I double-click a collapsed Group node, it expands (as you'd expect) and the NodeMouseDoubleClick event is fired off, where my code does something if the selected node is NOT a group node.

The problem arises when the Group is located near the bottom of the treeview, so that when I double-click the Group node it would require the treeview to expand vertically to fit the child nodes into view. In such cases, if I double-click the Group node, by the time it expands and adjusts the treeview, my mouse cursor is over a child node (it had to push everything up), and that causes the NodeMouseDoubleClick to think the child node is selected, which causes very odd behaviour.

How can I get around this? Should I not be using NodeMouseDoubleClick or..?

I see it was also explained in the feedback report Problem with TreeView DoubleClick event after expanding/collapsing caused change of scroll.

Answer

BFree picture BFree · Jan 23, 2009

The NodeDoubleClick is fine, but instead of using the e.Node, use this.treeView1.SelectedNode.