Version

EnteringEditMode Event

Occurs before an edit mode session begins.
Syntax
'Declaration
 
Public Event EnteringEditMode As EnteringEditModeHandler
public event EnteringEditModeHandler EnteringEditMode
Event Data

The event handler receives an argument of type CancelableEditModeEventArgs containing data related to this event. The following CancelableEditModeEventArgs properties provide information specific to this event.

PropertyDescription
Cancel (Inherited from System.ComponentModel.CancelEventArgs) 
Editor Returns the Infragistics.Win.EmbeddableEditorBase-derived editor conducting the edit mode session.
NavigationPath Returns the navigation path, as typed by the end user, which represents the full path to the Infragistics.Win.Misc.UltraNavigationBarLocation to be navigated to.
Remarks

The EnteringEditMode event can be canceled to prevent the edit mode session from occurring. If the event is not canceled, the Editor is displayed in the area of the control where the navigation path normally appears, allowing the end user to type a navigation path.

Example
The following code sample demonstrates how to use the UltraNavigationBar's EnteringEditMode and ExitingEditMode events to change the text which appears in the in-place editor, and also to change the text typed by the end user before the control attempts to parse it into a location.

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 System.Windows.Forms

Public Class FileSystemSupport

    ' Adds an UltraNavigationBarLocation and UltraTreeNode which each represent
    ' the current user, and adds "shortcuts" to the system's special folders under
    ' that location/node.
    Private Sub AddCurrentUserShortcut(ByVal rootLocation As UltraNavigationBarRootLocation, ByVal rootNode As UltraTreeNode)
        '  Get the username
        Dim userName As String = Me.UserName

        '  Get the constants of the Environment.SpecialFolder enumeration
        Dim values As Array = System.Enum.GetValues(GetType(Environment.SpecialFolder))

        '  Get the path to the users folder, based on the assumption that the parent 
        '  of the 'Desktop' special folder is the current user's root.
        Dim usersFolderPath As String = Me.UsersFolderPath

        '  Returns now if we can't get to the current user's root.
        If usersFolderPath.Length = 0 Or System.IO.Directory.Exists(usersFolderPath) = False Then Return

        '  Add an UltraNavigationBarLocation for the current user's root
        Dim userShortcutLocation As UltraNavigationBarLocation = rootLocation.Locations.Add(usersFolderPath, userName)
        userShortcutLocation.Settings.Appearance.Image = Me.GetImage(Images.Favorites)

        '  Set the TextButtonDisplayStyle property to 'ImageAndText' so that this
        '  location is a little more noticeable.
        userShortcutLocation.Settings.TextButtonDisplayStyle = TextButtonDisplayStyle.ImageAndText

        '  Add an UltraTreeNode for the current user's root
        Dim userShortcutNode As UltraTreeNode = rootNode.Nodes.Add(Nothing, userName)
        userShortcutNode.Override.NodeAppearance.Image = Me.GetImage(Images.Favorites)

        '  Create a ShortcutWrapper instance for each object and cross-reference them
        userShortcutLocation.Tag = New ShortcutWrapper(usersFolderPath, userShortcutNode, False)
        userShortcutNode.Tag = New ShortcutWrapper(usersFolderPath, userShortcutLocation, False)

        '  Iterate the special system folders, and add a shortcut for each of
        '  the children of the current user's root.
        Dim i As Integer
        For i = 0 To values.Length - 1

            Dim folderPath As String = System.Environment.GetFolderPath(values.GetValue(i))

            '  Some 'SpecialFolder' constants point to the same directory,
            '  so continue if we have already processed this one
            If (userShortcutLocation.Locations.Exists(folderPath)) Then Continue For

            If (folderPath.StartsWith(usersFolderPath)) Then

                '  Get the display text for this sub-directory
                Dim displayText As String = folderPath.Replace(String.Format("{0}\", usersFolderPath), String.Empty)
                If (displayText.Contains(PATH_SEPARATOR) = False) Then

                    '  Add an UltraNavigationBarLocation for the shorcut
                    Dim childLocation As UltraNavigationBarLocation = userShortcutLocation.Locations.Add(folderPath, displayText)
                    childLocation.Settings.Appearance.Image = Me.GetImage(Images.Shortcut)

                    '  Add an UltraTreeNode for the shorcut
                    Dim childNode As UltraTreeNode = userShortcutNode.Nodes.Add(Nothing, displayText)
                    childNode.Override.NodeAppearance.Image = Me.GetImage(Images.Shortcut)

                    '  Create a ShortcutWrapper instance for each object and cross-reference them
                    childLocation.Tag = New ShortcutWrapper(folderPath, childNode, True)
                    childNode.Tag = New ShortcutWrapper(folderPath, childLocation, True)
                End If
            End If
        Next
    End Sub

    Private ReadOnly Property UsersFolderPath() As String
        Get
            '  Get the path to the users folder, based on the assumption that the parent 
            '  of the 'Desktop' special folder is the current user's root.
            Dim path As String = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
            Dim usersFolder As DirectoryInfo = Directory.GetParent(path)

            If usersFolder Is Nothing Then Return String.Empty

            Return usersFolder.FullName

        End Get
    End Property

    ' Handles the UltraNavigationBar's 'ExitingEditMode' event.
    Private Sub OnNavigationBarExitingEditMode(ByVal sender As Object, ByVal e As ExitingEditModeEventArgs)

        '   If the edit mode session was canceled, don't proceed.
        If e.Cancel Or e.ApplyChanges = False Then Return

        '  Determine whether the edit mode text contains the special folders root
        '  if it does, we will replace it with the shortcut to the users folder,
        '  so that when edit mode is exited, the shortcut location is selected.
        Dim path As String = e.NavigationPath
        Dim usersFolderPath As String = Me.UsersFolderPath
        Dim userName As String = Me.UserName

        If (path.Contains(usersFolderPath)) Then
            path = path.Replace(usersFolderPath, userName)
            e.Editor.Value = path
        End If
    End Sub

    ' Handles the UltraNavigationBar's 'EnteringEditMode' event.
    Private Sub OnNavigationBarEnteringEditMode(ByVal sender As Object, ByVal e As CancelableEditModeEventArgs)

        '  Determine whether the edit mode text contains the name of the users folder
        '  shortcut; if it does, we will replace it with the special folders root,
        '  so that when edit mode is entered, the path to the actual folder appears.
        Dim path As String = e.NavigationPath
        Dim usersFolderPath As String = Me.UsersFolderPath
        Dim userName As String = Me.UserName

        If (path.Contains(userName) AndAlso path.Length > userName.Length) Then
            path = path.Replace(userName, usersFolderPath)
            e.NavigationPath = path
        End If
    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 System.Text;
using System.Windows.Forms;

public class FileSystemSupport
{
    private string UsersFolderPath
    {
        get
        {
            //  Get the path to the users folder, based on the assumption that the parent 
            //  of the 'Desktop' special folder is the current user's root.
            string usersFolderPath = System.Environment.GetFolderPath( Environment.SpecialFolder.Desktop );
            DirectoryInfo usersFolder = Directory.GetParent(usersFolderPath);
            usersFolderPath = usersFolder != null ? usersFolder.FullName : string.Empty;
            return usersFolderPath;
        }
    }

    private void AddCurrentUserShortcut( UltraNavigationBarRootLocation rootLocation, UltraTreeNode rootNode )
    {
        //  Get the username
        string userName = this.UserName;

        //  Get the constants of the Environment.SpecialFolder enumeration
        Array values = Enum.GetValues( typeof(Environment.SpecialFolder) );

        //  Get the path to the users folder, based on the assumption that the parent 
        //  of the 'Desktop' special folder is the current user's root.
        string usersFolderPath = this.UsersFolderPath;

        //  Returns now if we can't get to the current user's root.
        if ( usersFolderPath.Length == 0 || System.IO.Directory.Exists(usersFolderPath) == false )
            return;

        //  Add an UltraNavigationBarLocation for the current user's root
        UltraNavigationBarLocation userShortcutLocation = rootLocation.Locations.Add( usersFolderPath, userName );
        userShortcutLocation.Settings.Appearance.Image = this.GetImage(Images.Favorites);

        //  Set the TextButtonDisplayStyle property to 'ImageAndText' so that this
        //  location is a little more noticeable.
        userShortcutLocation.Settings.TextButtonDisplayStyle = TextButtonDisplayStyle.ImageAndText;

        //  Add an UltraTreeNode for the current user's root
        UltraTreeNode userShortcutNode = rootNode.Nodes.Add( null, userName );
        userShortcutNode.Override.NodeAppearance.Image = this.GetImage(Images.Favorites);

        //  Create a ShortcutWrapper instance for each object and cross-reference them
        userShortcutLocation.Tag = new ShortcutWrapper( usersFolderPath, userShortcutNode, false );
        userShortcutNode.Tag = new ShortcutWrapper( usersFolderPath, userShortcutLocation, false );

        //  Iterate the special system folders, and add a shortcut for each of
        //  the children of the current user's root.
        for ( int i = 0; i < values.Length; i ++ )
        {
            string folderPath = System.Environment.GetFolderPath( (Environment.SpecialFolder)values.GetValue(i) );

            //  Some 'SpecialFolder' constants point to the same directory,
            //  so continue if we have already processed this one
            if ( userShortcutLocation.Locations.Exists(folderPath) )
                continue;

            if ( folderPath.StartsWith(usersFolderPath) )
            {
                //  Get the display text for this sub-directory
                string displayText = folderPath.Replace( string.Format(@"{0}\", usersFolderPath), string.Empty );
                if ( displayText.Contains(PATH_SEPARATOR) == false )
                {
                    //  Add an UltraNavigationBarLocation for the shorcut
                    UltraNavigationBarLocation childLocation = userShortcutLocation.Locations.Add( folderPath, displayText );
                    childLocation.Settings.Appearance.Image = this.GetImage(Images.Shortcut);

                    //  Add an UltraTreeNode for the shorcut
                    UltraTreeNode childNode = userShortcutNode.Nodes.Add( null, displayText );
                    childNode.Override.NodeAppearance.Image = this.GetImage(Images.Shortcut);

                    //  Create a ShortcutWrapper instance for each object and cross-reference them
                    childLocation.Tag = new ShortcutWrapper( folderPath, childNode, true );
                    childNode.Tag = new ShortcutWrapper( folderPath, childLocation, true );
                }
            }
        }

    }

    // Handles the UltraNavigationBar's 'ExitingEditMode' event.
    private void OnNavigationBarExitingEditMode(object sender, ExitingEditModeEventArgs e)
    {
        //  If the edit mode session was canceled, don't proceed.
        if  ( e.Cancel || e.ApplyChanges == false )
            return;

        //  Determine whether the edit mode text contains the special folders root;
        //  if it does, we will replace it with the shortcut to the users folder,
        //  so that when edit mode is exited, the shortcut location is selected.
        string path = e.NavigationPath;
        string usersFolderPath = this.UsersFolderPath;
        string userName = this.UserName;

        if ( path.Contains(usersFolderPath) )
        {
            path = path.Replace( usersFolderPath, userName );
            e.Editor.Value = path;
        }
    }

    // Handles the UltraNavigationBar's 'EnteringEditMode' event.
    private void OnNavigationBarEnteringEditMode(object sender, CancelableEditModeEventArgs e)
    {
        //  Determine whether the edit mode text contains the name of the users folder
        //  shortcut; if it does, we will replace it with the special folders root,
        //  so that when edit mode is entered, the path to the actual folder appears.
        string path = e.NavigationPath;
        string usersFolderPath = this.UsersFolderPath;
        string userName = this.UserName;

        if ( path.Contains(userName) && path.Length > userName.Length )
        {
            path = path.Replace( userName, usersFolderPath );
            e.NavigationPath = path;
        }
    }
}
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