Introduction
The ComboBoxTree
control expands on Gevik Babakhani's DropDown Treeview control. Nearly 85% of the code has been rewritten. This updated control provides the following enhancements:
- Treeview can be sized beyond the width of its parents and the form.
- The sizing grip functionality is more consistent with standard Windows sizing grips.
- Node selection populates the box when it is a root node, the
SelectionSeparator
property assigns the separator (i.e. a SelectionSeperator
that is a period '.' would generate something like: Node0.subnode1.subnode2.rootnode).
- Better design-time support including the standard treeview WYSIWYG editor.
- The selected node box is editable and accessible as a property - however there is no validation on this value when set manually.
- Simplified, by using regions and less method calls.
Please feel free to post comments, questions or criticism. This is my first Windows control, so feedback is appreciated.
Background
I needed a control for a project that required multiple treeviews but had very limited form space. When I found Gevik's DropDown TreeView, I was relieved to find what I was looking for but soon ran into problems that required attention and hours of code updating.
Originally, I didn't intend to redistribute the updated control, but I wanted to give back as a way of saying thanks. Thanks goes out to The Code Project and the original author - thanks Gevik Babakhani ;-)
To use the control, simply add the ComboBoxTree.dll file to your toolbox and drop the control onto your form. The control should provide most of the treeview functionality you require.
Points of Interest
I was able to get around the "sizing beyond parent" problem by adding the treeview to its own borderless form. My next problem involved making the sizing grip work correctly. I was able to get this going by calculating the offset of the mouse within the sizing grip along with the absolute mouse position and the location of the form containing the treeview. My final big problem was the sizing grip when scroll bars showed. Disabling scroll bars wasn't a solution so my only alternative was to add a margin of space on the bottom and right-hand side. A bit different but definitely functional!
History
- 01/26/04 Version 1.0 submitted.
- 02/02/04 Version 1.2 submitted, changes include:
- Text property is now overridden.
AbsoluteChildrenSelectableOnly
property option now available, users can now select end nodes only or all nodes.
- Public
ValidateText
method now available to validate manually entered text.
SelectionSeparator
now called BranchSeparater
.
- Minor toolbox category changes.