Allow multi-select in a .NET TreeView

Darcy Casselman picture Darcy Casselman · Oct 15, 2008 · Viewed 61.4k times · Source

I'm stuck in .NET 2.0 Windows Forms.

It doesn't look like the ability to select multiple nodes exists in the standard TreeView control.

I'm trying to do this for a context menu selection. So check boxes aren't an acceptable UI paradigm here.

What's the best way to provide that very necessary functionality?

Answer

Jeff Yates picture Jeff Yates · Oct 15, 2008

We did this in a WTL project once, but the basic work needed is the same for .NET. To achieve a multiple selection tree control, you will need to draw the tree items yourself and override the keyboard and mouse handling. You will also need to maintain your own list of items that are selected.

Don't forget to consider selection rules (are parents and children allowed, for example), and don't forget to implement the keyboard shortcuts including selection using Ctrl, Shift, and Ctrl+Shift, as well as the Spacebar for selecting/deselecting.