Version

SelectedLocation Property (UltraNavigationBar)

Gets/sets the UltraNavigationBarLocation instance which represents the terminal point of the navigation path. Available only at runtime.
Syntax
'Declaration
 
Public Property SelectedLocation As UltraNavigationBarLocation
public UltraNavigationBarLocation SelectedLocation {get; set;}
Exceptions
ExceptionDescription
System.ExceptionThrown when the specified UltraNavigationBarLocation instance is associated with a different UltraNavigationBar, or not associated with any UltraNavigationBar. Also thrown when the specified UltraNavigationBarLocation or any of it ancestors is not visible in the user interface.
Remarks

The UltraNavigationBar's SelectedLocation property returns the terminal location in the navigation path. This is always the "rightmost" location displayed by the control. The UltraNavigationBar's SelectedLocation property always returns a non-null value; in the case where no locations are specifically selected, the RootLocation is returned, i.e., the root location is always selected. The UltraNavigationBarLocation's UltraNavigationBarLocation.SelectedLocation property return the one member of its UltraNavigationBarLocation.Locations collection which is also present on the navigation path; this location appears to the immediate right of its parent. Setting the UltraNavigationBarLocation's SelectedLocation property to null causes all members of the navigation path which follow that location to be removed from the navigation path; the location whose SelectedLocation property was set to null then becomes the control's SelectedLocation.

Setting the SelectedLocation property to null is logically equivalent to setting it to reference the RootLocation.

Example
The following code sample demonstrates how to populate an UltraNavigationBar control and an UltraTree control with the contents of the local machine's file system:

For an overview of how to handle events in Visual Basic or Visual C#, see Event Handlers in Visual Basic and Visual C#. For specific information and code examples illustrating how to consume events in your application, see Consuming Events in the .NET Framework Developer's Guide.

Imports System
Imports System.Drawing
Imports System.IO
Imports System.Collections.Generic
Imports System.ComponentModel
Imports Infragistics.Shared
Imports Infragistics.Win
Imports Infragistics.Win.Misc
Imports Infragistics.Win.Misc.UltraWinNavigationBar
Imports Infragistics.Win.UltraWinTree

	Public Class FileSystemSupport
    	Private Const PATH_SEPARATOR As String = "\"
    	Private navigationBar As UltraNavigationBar = Nothing
    	Private tree As UltraTree = Nothing

    Private Sub Populate(ByVal directory As DirectoryInfo, ByVal location As UltraNavigationBarLocation)

        Dim childDirectories As DirectoryInfo()

        Try
            childDirectories = directory.GetDirectories()
        Catch
            Return
        End Try


        Try

            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor

            If (childDirectories Is Nothing Or childDirectories.Length = 0) Then Return

            '  Get a reference to the collection
            Dim locations As NavigationBarLocationsCollection = location.Locations

            Dim wrapper As DirectoryWrapper = Nothing
            If Not location.Tag Is Nothing Then wrapper = location.Tag

            Dim parentNode As UltraTreeNode = wrapper.AssociatedObject
            Dim nodes As TreeNodesCollection = parentNode.Nodes

            '  Clear each collections if it is not empty
            If (locations.Count > 0) Then locations.Clear()

            If (nodes.Count > 0) Then nodes.Clear()

            Dim i As Integer
            For i = 0 To childDirectories.Length - 1

                '  Get the DirectoryInfo object for this child directory
                Dim childDirectory As DirectoryInfo = childDirectories(i)

                '  If the directory is hidden, don't add a location for it.
                If ((childDirectory.Attributes And FileAttributes.Hidden) = FileAttributes.Hidden) Then Continue For

                '  Create an UltraNavigationBarLocation instance for the child directory
                '  also create the associated UltraTreeNode so we can attach it to the location.
                Dim childLocation As UltraNavigationBarLocation = New UltraNavigationBarLocation(childDirectory.FullName, childDirectory.Name)
                Dim childNode As UltraTreeNode = New UltraTreeNode(childLocation.Key, childLocation.Text)

                '  Assign an instance of a wrapper class which associates the node
                '  and directory to this location to its Tag property.
                childLocation.Tag = New DirectoryWrapper(childDirectory, childNode)

                '  Assign an instance of a wrapper class which associates the location
                '  and directory to this node to its Tag property.
                childNode.Tag = New DirectoryWrapper(childDirectory, childLocation)

                '  Add the UltraNavigationBarLocation which represents this directory
                '  to the Locations collection of the specified location.
                locations.Add(childLocation)

                '  Add the child node to the parent's Nodes collection
                nodes.Add(childNode)
            Next

        Finally

            System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
        End Try


    End Sub

    ' Handles the UltraNavigationBar's 'InitializeLocations' event.
    Private Sub OnNavigationBarInitializeLocations(ByVal sender As Object, ByVal e As InitializeLocationsEventArgs)

        '  Populate the collection with the contents of the parent directory
        Dim parentLocation As UltraNavigationBarLocation = e.ParentLocation
        Dim wrapper As DirectoryWrapper = Nothing
        If Not parentLocation.Tag Is Nothing Then wrapper = parentLocation.Tag

        If (wrapper Is Nothing) Then Return

        Dim directoryInfo As DirectoryInfo = wrapper.DirectoryInfo

        Me.Populate(directoryInfo, parentLocation)

    End Sub

    ' Handles the UltraTree's 'BeforeExpand' event.
    Private Sub OnTreeBeforeExpand(ByVal sender As Object, ByVal e As CancelableNodeEventArgs)

        '  Acccess the associated UltraNavigationBarLocation's Locations collection;
        '  note that this will trigger the population of the Locations collection
        '  if necessary, which will in turn populate this node's Nodes collection.
        Dim parentNode As UltraTreeNode = e.TreeNode
        Dim wrapper As DirectoryWrapper = Nothing
        If Not parentNode.Tag Is Nothing Then wrapper = parentNode.Tag

        Dim location As UltraNavigationBarLocation = Nothing
        If Not wrapper Is Nothing Then location = wrapper.AssociatedObject Else location = Me.navigationBar.RootLocation
        Dim count As Integer = location.Locations.Count

    End Sub

    ' Handles the UltraNavigationBar's 'SelectedLocationChanged' event.
    Private Sub OnNavigationBarSelectedLocationChanged(ByVal sender As Object, ByVal e As SelectedLocationChangedEventArgs)

        '  Synchronize the UltraTree with the UltraNavigationBar by activating and selecting
        '  the node associated with the new SelectedLocation.
        Dim wrapper As DirectoryWrapper = Nothing
        If Not e.SelectedLocation.Tag Is Nothing Then wrapper = e.SelectedLocation.Tag
        Dim node As UltraTreeNode = Nothing
        If Not wrapper Is Nothing Then node = wrapper.AssociatedObject Else node = Me.tree.Nodes(0)
        Me.tree.ActiveNode = node
        node.Selected = True

    End Sub

    ' Handles the UltraTree's 'AfterActivate' event.
    Private Sub OnTreeAfterActivate(ByVal sender As Object, ByVal e As NodeEventArgs)

        '  Synchronize the UltraNavigationBar with the UltraTree by selecting
        '  the location associated with the new ActiveNode.
        Dim activeNode As UltraTreeNode = e.TreeNode
        Dim wrapper As DirectoryWrapper = Nothing
        wrapper = IIf(Not activeNode Is Nothing, activeNode.Tag, Nothing)
        Dim location As UltraNavigationBarLocation = Nothing
        If Not wrapper Is Nothing Then location = wrapper.AssociatedObject Else location = Me.navigationBar.RootLocation
        If (Not location Is Nothing) Then Me.navigationBar.SelectedLocation = location
    End Sub

	End Class
using System;
using System.Drawing;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using Infragistics.Shared;
using Infragistics.Win;
using Infragistics.Win.Misc;
using Infragistics.Win.Misc.UltraWinNavigationBar;
using Infragistics.Win.UltraWinTree;

    public class FileSystemSupport
    {
        private const string PATH_SEPARATOR = "\\";
        private UltraNavigationBar navigationBar = null;
        private UltraTree tree = null;

        private void Populate( DirectoryInfo directory, UltraNavigationBarLocation location )
        {
            DirectoryInfo[] childDirectories = null;
            
            try { childDirectories = directory.GetDirectories(); }
            catch { return; }

            try
            {
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;

                if ( childDirectories != null && childDirectories.Length > 0 )
                {
                    //  Get a reference to the collection
                    NavigationBarLocationsCollection locations = location.Locations;

                    DirectoryWrapper wrapper = location.Tag as DirectoryWrapper;
                    UltraTreeNode parentNode = wrapper.AssociatedObject as UltraTreeNode;
                    TreeNodesCollection nodes = parentNode.Nodes;

                    //  Clear each collections if it is not empty
                    if ( locations.Count > 0 )
                        locations.Clear();

                    if ( nodes.Count > 0 )
                        nodes.Clear();

                    for ( int i = 0; i < childDirectories.Length; i ++ )
                    {
                        //  Get the DirectoryInfo object for this child directory
                        DirectoryInfo childDirectory = childDirectories[i];

                        //  If the directory is hidden, don't add a location for it.
                        if ( (childDirectory.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden )
                            continue;

                        //  Create an UltraNavigationBarLocation instance for the child directory;
                        //  also create the associated UltraTreeNode so we can attach it to the location.
                        UltraNavigationBarLocation childLocation = new UltraNavigationBarLocation( childDirectory.FullName, childDirectory.Name );
                        UltraTreeNode childNode = new UltraTreeNode( childLocation.Key, childLocation.Text );

                        //  Assign an instance of a wrapper class which associates the node
                        //  and directory to this location to its Tag property.
                        childLocation.Tag = new DirectoryWrapper( childDirectory, childNode );

                        //  Assign an instance of a wrapper class which associates the location
                        //  and directory to this node to its Tag property.
                        childNode.Tag = new DirectoryWrapper( childDirectory, childLocation );

                        //  Add the UltraNavigationBarLocation which represents this directory
                        //  to the Locations collection of the specified location.
                        locations.Add( childLocation );

                        //  Add the child node to the parent's Nodes collection
                        nodes.Add( childNode );
                    }
                }
            }
            finally
            {
                System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
            }
        }

        // Handles the UltraNavigationBar's 'InitializeLocations' event.
        private void OnNavigationBarInitializeLocations(object sender, InitializeLocationsEventArgs e)
        {
            //  Populate the collection with the contents of the parent directory
            UltraNavigationBarLocation parentLocation = e.ParentLocation;
            DirectoryWrapper wrapper = parentLocation.Tag as DirectoryWrapper;
            if ( wrapper == null )
                return;

            DirectoryInfo directoryInfo = wrapper.DirectoryInfo;

            this.Populate( directoryInfo, parentLocation );
        }

        /// Handles the UltraTree's 'BeforeExpand' event.
        private void OnTreeBeforeExpand(object sender, CancelableNodeEventArgs e)
        {
            //  Acccess the associated UltraNavigationBarLocation's Locations collection;
            //  note that this will trigger the population of the Locations collection
            //  if necessary, which will in turn populate this node's Nodes collection.
            UltraTreeNode parentNode = e.TreeNode;
            DirectoryWrapper wrapper = parentNode.Tag as DirectoryWrapper;
            UltraNavigationBarLocation location = wrapper != null ? wrapper.AssociatedObject as UltraNavigationBarLocation : this.navigationBar.RootLocation;
            int count = location.Locations.Count;
        }

        /// Handles the UltraNavigationBar's 'SelectedLocationChanged' event.
        private void OnNavigationBarSelectedLocationChanged(object sender, SelectedLocationChangedEventArgs e)
        {
            //  Synchronize the UltraTree with the UltraNavigationBar by activating and selecting
            //  the node associated with the new SelectedLocation.
            DirectoryWrapper wrapper = e.SelectedLocation.Tag as DirectoryWrapper;
            UltraTreeNode node = wrapper != null ? wrapper.AssociatedObject as UltraTreeNode : this.tree.Nodes[0];
            this.tree.ActiveNode = node;
            node.Selected = true;
        }

        /// Handles the UltraTree's 'AfterActivate' event.
        private void OnTreeAfterActivate(object sender, NodeEventArgs e)
        {
            //  Synchronize the UltraNavigationBar with the UltraTree by selecting
            //  the location associated with the new ActiveNode.
            UltraTreeNode activeNode = e.TreeNode;
            DirectoryWrapper wrapper = activeNode != null ? activeNode.Tag as DirectoryWrapper : null;
            UltraNavigationBarLocation location = wrapper != null ? wrapper.AssociatedObject as UltraNavigationBarLocation : null;
            if ( location != null )
                this.navigationBar.SelectedLocation = location;
        }
    }
Requirements

Target Platforms: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also