Click here to Skip to main content
15,881,600 members
Articles / Desktop Programming / Windows Forms

Vista Style Address Bar for .NET 2.0/WinForms

Rate me:
Please Sign up or sign in to vote.
4.77/5 (12 votes)
10 Apr 2010CPOL2 min read 71K   2.4K   83  
WinForms version of the Vista style address bar that can be extended to support more than just browsing the file system.
#region Using Statements

#region .NET Namespace

using System;
using System.Drawing;

#endregion

#endregion

namespace AddressBarExt
{
    /// <summary>
    /// Interface for a traversable node used in the AddressBarExt control.
    /// 
    /// Author : James Strain
    /// Email : leon_STARS@hotmail.com
    /// Tested Platforms : Windows Vista Ultimate x64 / WinXP  Pro 32-bit
    /// 
    /// Additional Work Needed :
    /// 
    /// None that I am aware of...
    /// 
    /// </summary>
    public interface IAddressNode
    {
        /// <summary>
        /// Gets/Sets the parent of this node
        /// </summary>
        IAddressNode Parent
        {
            get;
            set;
        }

        /// <summary>
        /// Gets/Sets the Display name of this node
        /// </summary>
        String DisplayName
        {
            get;
            set;
        }

        /// <summary>
        /// Gets the Icon that represents this node type.
        /// </summary>
        Icon Icon
        {
            get;
        }

        /// <summary>
        /// Gets the Unique ID for this node
        /// </summary>
        Object UniqueID
        {
            get;
        }

        /// <summary>
        /// Gets/Sets any user defined extra data for this node
        /// </summary>
        Object Tag
        {
            get;
            set;
        }

        /// <summary>
        /// Gets an array of Child Nodes
        /// </summary>
        IAddressNode[] Children
        {
            get;
        }

        /// <summary>
        /// Method that updates this node to gather all relevant detail.
        /// </summary>
        void UpdateNode();

        /// <summary>
        /// Returns a given child, based on a unique ID
        /// </summary>
        /// <param name="uniqueID">Unique ID to identify the child</param>
        /// <param name="recursive">Indicates if the search should recurse through childrens children..</param>
        /// <returns>Returns the child node</returns>
        IAddressNode GetChild(object uniqueID, bool recursive);

        /// <summary>
        /// Clones a node.
        /// </summary>
        /// <returns>Clone of this node.</returns>
        IAddressNode Clone();
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

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



Comments and Discussions