Introduction
This control provides a new kind of navigation for your applications. It uses the TreeNode
s of a TreeView
to offer functionality to the user.
Background
I saw this control in a commercial application, and I liked the look and feel and the possibilities it gives to the programmer. Because I didn't see such a control anywhere else, I decided to develop one on my own and use it in one of my projects. I hope others like my NavigationTree
, too.
Using the code
When using a NavigationTree
, you have to define categories and items. Categories are represented by NavigationCategory
objects, and items are represented by NavigationItem
objects. Each item is owned by a category, and the categories are owned by the NavigationTree
. Items can be organized hierarchically.
Use categories to represent different parts of your application (like 'Customers', 'Manufacturers', 'Stock', an so on), and items to represent topics within a category (like 'customer list', 'search customer', 'new customer'). When a category is selected, its items will be displayed and the category header will be set.
When an item is selected, an event will be fired and your app can react on this event (e.g., display the customer list). You can use ImageList
s to assign icons to NavigationItem
s and NavigationCategory
s.
At the moment, NavigationCategory
s and NavigationItem
s can only be added by code at runtime:
NavigationCategory c1 = new NavigationCategory("Customers", 0);
c1.Name = "catCustomer";
NavigationItem i = new NavigationItem("Master Data", 0);
i.AddChild(new NavigationItem("Customer List", 1));
i.AddChild(new NavigationItem("Details", 2));
c1.AddItem(i);
c1.AddItem(new NavigationItem("Orders", 3));
c1.AddItem(new NavigationItem("Invoices", 4));
navigationTree1.AddCategory(c1);
Add delegates to be informed when a NavigationItem
is going to be selected, a NavigationItem
has been selected, or a NavigationCategory
has been selected:
navigationTree1.OnCategorySelected += new
CategorySelected(navigationTree1_OnCategorySelected);
navigationTree1.OnBeforeItemSelect += new
BeforeItemSelect(navigationTree1_OnBeforeItemSelect);
navigationTree1.OnItemSelected += new
ItemSelected(navigationTree1_OnItemSelected);
You can select NavigationItem
s by code:
myNavItem.Select();
myNavItem.Select(false);
You can change the Text
property of a NavigationItems
by code:
myNavItem.Text = "a new text";
myNavItem.Refresh();
Points of Interest
I improved the NavigationTree
step by step, as more functionality was needed in my project, so some parts of the source look rather wild and are not well documented. I'm going to improve the source when posting future versions. Suggestions, improvements, and bug reports are welcome.
History
- 3/28/06 - version 1.0 and demo project posted on CodeProject.