Click here to Skip to main content
Click here to Skip to main content

Vista Style Address Bar for .NET 2.0/WinForms

, 10 Apr 2010
Rate this:
Please Sign up or sign in to vote.
WinForms version of the Vista style address bar that can be extended to support more than just browsing the file system.
abe.png

Introduction

Whilst Windows Vista still sits in amidst much controversy and discussion, a few of the features/changes it implemented have been quite cool. However, Microsoft failed to really let slide some of the cool UI changes down to us normal (or student) developers.

This article/code sample contains a personal implementation of the Vista-Style address bar for use in .NET/WinForms applications. It's based around a simple Tree/Node traversal that can be inherited to browse whatever you like.

Included in the demo is an example implementation that browses the file system tree, though it is limited in functionality (it was only made to illustrate how it all works Smile | :) ).

Using the Code

The easiest way to understand the code is to download it and open it and have a play about.

The simplest way to use the bar is to drop it onto your form in Design view, then in the constructor of your form add the following code:

//Initialize the bar with a root node type.
this.AdBar.InitializeRoot(new FileSystemNode());

All you need to do is pass it a root node, and the node itself should provide the information directly to the control. The FileSystemNode provides a basic enumeration of the first logical drive found on your Windows Install.

To implement the IAddressNode class, there are a few simple Properties to override and implement, then three real methods to implement yourself:

  • UpdateNode() - Used to update the node itself for any changes (e.g. in the FileSystemNode it checks for child folder changes and folder name changes)
  • GetChild() - Searches for a given child node based on a unique ID (A Unique ID being whatever you define it as. In FileSystemNode, we use an absolute path for a folder as the unique ID).
  • Clone() - Clones a given node as a separate value copy (rather than just by reference).

Conclusion

It's simple and relatively lightweight, it just needs you to implement your own IAddressNode derivatives to let it traverse any hierarchical structure you see fit. Smile | :)

History

  • 7/3/2009 - First upload of code to CodeProject
  • 29/12/2009 - Version 2.0 Supporting "My Computer" root node and VS2008, various bug fixes
  • 10/4/2010 - Version 2.1 Fix to overflow behaviour to make use of available space better. Slight optimization to overflow generation.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

jwraith
Software Developer
United Kingdom United Kingdom
A graduate of the University of Dundee, and an ex-Microsoft UK Support Engineer currently happily employed at Codemasters, Southam.
Follow on   Twitter

Comments and Discussions

 
Questioncomputernode rename PinmemberMember 1021535017-Jan-14 5:36 
GeneralMy vote of 5 PinmemberTG_Cid22-Nov-10 7:17 
Question[My vote of 1] Why is your demo's form not resizable? Pinmembertonyt10-Apr-10 16:35 
AnswerRe: [My vote of 1] Why is your demo's form not resizable? Pinmemberjwraith11-Apr-10 0:34 
GeneralRe: [My vote of 1] Why is your demo's form not resizable? Pinmembertonyt11-Apr-10 12:57 
GeneralRe: [My [revote of 5]] Why is your demo's form not resizable? Pinmembertonyt7-May-10 1:37 
GeneralOverflow problems Pinmembersee_seA1-Mar-10 11:14 
GeneralRe: Overflow problems Pinmemberjwraith10-Apr-10 4:20 
GeneralRe: Overflow problems Pinmemberjwraith10-Apr-10 6:09 
GeneralDoubleClick Pinmembermikeduglas8-Jan-10 19:49 
GeneralRe: DoubleClick Pinmemberjwraith10-Apr-10 4:21 
GeneralDropDowns Pinmembertonyt29-Dec-09 14:41 
I've done this too using ToolStrip controls (well, it isn't quite finished), and based on that experience, I can offer this advice: The dropdowns will bog down very quickly with a reasonably large number of items, because they're menus.
 
In Vista's implementation the dropdowns are not menus, they're more like custom drawn list controls that paint like menus, except they have vertical scroll bars (which I feel are essential). They are also 'virtual' in that regardless of how many items are in the list, you do not have to wait for all items to be initialized, because item initialization doesn't happen until the first time an item is drawn.
 
In any case, nice work.
 
My own version is designed to be driven by a treeview control (it gets all of its content from a TreeView's nodes). I did it that way mainly because I don't use it for displaying file system data and because its always used in conjunction with a TreeView and other controls that together form a 'cheap' clone of Vista's Explorer.
GeneralRe: DropDowns Pinmemberjwraith30-Dec-09 2:07 
GeneralNull Reference Exception PinmemberBenW26924-May-09 21:36 
GeneralRe: Null Reference Exception Pinmemberjwraith19-Dec-09 14:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.140721.1 | Last Updated 10 Apr 2010
Article Copyright 2009 by jwraith
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid