Virtual Tree

The fastest tree in the west

Download Purchase

Virtual Tree is a combined Tree/ListView .NET control written in C# to use the power of the .NET framework. You can use Virtual Tree as a simple tree, a standard list view, or you can combine the best features of both and provide your users with a dynamic interface that allows them to explore a hierarchical view of their data while displaying and editing all the relevant information in columns.

Virtual Tree's unique support for context sensitive columns allows you to display only those columns relevant to the currently selected item (see example screenshot). This makes it possible for the first time to meaningfully display heterogeneous data in a combined Tree/ListView control.

Version 4 of Virtual Tree is compatible with Visual Studio 2005, 2008, 2010 and 2012 and includes sample projects for each of these development environments.

context sensitive columns

How is Virtual Tree different from other Tree Controls?

Unlike most other tree controls, Virtual Tree is designed from the ground up to be data driven. Most other tree controls have a basic "unbound" mode in which the tree representation is built manually. If they support data binding, it is typically built on top of this "unbound" mode and simply generates the in-memory representation (consisting of tree nodes) when the Data Source is set. For large Data Sources this approach can be both extremely slow and resource hungry.

The Virtual Tree approach is radically different. It does not have a separate "unbound" mode at all. This allows the design to leverage the power of data binding to extract only the information from the Data Source required to display the current state of the tree representation. This means that, regardless of the size of the Data Source, Virtual Tree only initially needs to build a display of the first 30 or so items (ie the typical number of rows displayed on a screen). As the user browses the tree, Virtual Tree extracts the information required on-demand from the Data Source. This approach greatly improves initial load times and reduces the memory footprint.

Most other data binding solutions provide only limited ability to customize the appearance or behaviour of the control. If you want to do anything more advanced you have to revert to the "unbound" mode. Because Virtual Tree is designed from the ground up to be data driven it does not suffer from this problem. You can customize just about every aspect of it's appearance and behaviour without having to sacrifice the ability to use data binding. Virtual Tree can do anything possible with a traditional "unbound" tree control plus a whole lot more.

Our data binding model allows you to bind to real data sources - not just artificially constructed samples. But don't just take our word for it - try it out. Our sample projects include binding to very large data sources and the standard MS Northwind sample database.


Binding to ADO.NET Datasets, DataViews or any class that supports the IList interface
True virtual loading of data on demand to support very large data sources
Columns and data bindings can be automatically generated from ADO.NET table definitions or Object type definitions
Automatically sizes the displayed columns to fit the available space eliminating the need for a horizontal scrollbar.
No code required when using an ADO.NET Datasource or Infralution's Virtual Data Objects
Columns can be pinned allowing them to act as headers when scrolling through a large number of columns.
Those columns not relevant to the currently selected item can be hidden automatically.
Row height can be set on an individual basis and even calculated automatically by Virtual Tree to fit the displayed data
Provide runtime resizing of row height and display of data errors
Changes made by the user at runtime can be saved and loaded to/from standard .NET XML streams
In-place editing of cell values using any .NET editing control.
Virtual Tree implements Microsoft Active Accessibility (MSAA) interfaces to enable the use of screen readers and other accessibility aids.
display cell text containing multiple fonts and colors using Rich Text Formatting (RTF).

This library of useful controls is included with your purchase of Virtual Tree. The library contains a range of useful controls including:

  • UniversalEditBox - an editor control that uses the standard UITypeEditor and TypeConverter interfaces to allow editing of images, enumerations, dates and just about any other type that has a TypeConverter
  • VirtualListBox - a replacement control for the standard ListBox control that provides true virtual loading of data and outstanding performance with large data sources.
  • VirtualDropDownList - a replacement control for the standard ComboBox control that provides true virtual loading of data and outstanding performance with large data sources.
Check boxes (or any other control) can be displayed immediately following the row icon by specifying a PrefixColumn.
Data errors can be flagged using error icons in both the row header and cell. Support for the standard IDataErrorInfo interface means that errors in ADO.NET Data Rows are shown automatically.
Allows rows to be moved or copied within the tree hierarchy - no code needed for ADO.NET Datasets.
Standard and multiple selection modes as well as support for drag selection
Full Row selection, Main Cell selection or individual Cell selection.
Virtual Tree provides full support for localization including Right to Left languages such as Arabic and Hebrew. Right to Left layout can be specified for the whole tree and on individual columns.
Give your products a visual edge
Easy customization of the visual appearance of headers, rows and cells using hierarchical styles
Style Templates allow you to change the default appearance of Virtual Tree with one setting. Choose from a range of templates including Classic, XP and Vista.
Allows the display of a graphical preview of values. This is the same infrastructure used by the Visual Studio designer to display previews in the property editor. Provides instant support for all the standard types (bitmaps, icons, enumerations). Makes it easy to provide graphical display and editing for your own types.
All aspects of the appearance and behaviour of visual elements can be customized using the Virtual Tree widget framework.
No additional libraries required. Printing works out the box - or you can customize using visual styles.
Virtual Tree is licensed per developer. You can build as many applications as you want and distribute them without paying any further royalties.
You can optionally purchase full source for a reasonable price to guarantee support for your development needs into the future.

What are people saying about Virtual Tree?