Version

NavigationPathParseError Event

Occurs when a string could not be successfully parsed into a navigation path.
Syntax
'Declaration
 
Public Event NavigationPathParseError As NavigationPathParseErrorHandler
public event NavigationPathParseErrorHandler NavigationPathParseError
Event Data

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

PropertyDescription
DisplayErrorMessage Gets/sets whether a MessageBox will be displayed to the end user to report the failed parsing operation.
ErrorMessage Gets/sets the string that will be displayed to the end user in a MessageBox, describing the reason the parsing operation failed. Applicable only when DisplayErrorMessage is set to true.
ErrorMessageCaption Gets/sets the string that will be assigned to the caption of the MessageBox that is displayed when a parsing operation has failed. Applicable only when DisplayErrorMessage is set to true.
InvalidText Returns the string that was not able to be parsed into a navigation path.
Path Gets/sets the string which represents the navigation path to be parsed. The value of this property can be changed by listeners, in which case the new value appears in the editor when execution returns from the event (provided that StayInEditMode property is set to true).
StayInEditMode Gets/sets whether the edit mode session will continue after execution returns from the NavigationPathParseError event.
Remarks

When an edit mode session ends, or the NavigateTo(String,Boolean) method is called, and the string cannot be parsed into a navigation path, the NavigationPathParseError event is fired. This event gives the end developer to opportunity to display a MessageBox to the end user and/or continue the edit mode session.

Example
The following code sample demonstrates how the NavigationPathParseError event can be used to customize the dialog that appears when the end users inputs a string that cannot be parsed into a valid location, and also how to use the EnteredEditMode event to select only part of the text which appears initially:

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.Globalization

    Private Const LCID_SPAIN As Integer = 3082
    Private Const LCID_FRANCE As Integer = 1036
    Private Const LCID_GERMANY As Integer = 1031

    ' <summary>
    ' Handles the UltraNavigationBar's 'NavigationPathParseError' event.
    ' </summary>
    Private Sub OnNavigationBarNavigationPathParseError(ByVal sender As Object, ByVal e As NavigationPathParseErrorEventArgs)

        Dim dialogMessage As String = String.Empty
        Dim dialogCaption As String = String.Empty

        '  Determine whether we specifically recognize the current culture
        Dim culture As CultureInfo = System.Globalization.CultureInfo.CurrentCulture

        '  If a culture that you would like to support in your application
        '  is not cased here, don't panic - more language conversions are
        '  available courtesy of AltaVista's Babel Fish Translation
        '  (http://babelfish.altavista.com)
        Select Case culture.LCID

            Case LCID_SPAIN
                dialogMessage = "La trayectoria especificada no existe."
                dialogCaption = "Error"

            Case LCID_FRANCE
                dialogMessage = "Le chemin indiqué n'existe pas."
                dialogCaption = "Erreur"

            Case LCID_GERMANY
                dialogMessage = "Der spezifizierte Weg besteht nicht."
                dialogCaption = "Störung"

        End Select

        '  If we specifically recognized the current culture, display the default
        '  dialog with a culture-specific error message and caption.
        e.DisplayErrorMessage = dialogMessage.Length > 0

        If (e.DisplayErrorMessage) Then

            '  Append the invalid text to the dialog message, and assign
            '  it to the ErrorMessage property of the event arguments.
            dialogMessage = String.Format("{0}{1}('{2}')", dialogMessage, Environment.NewLine, e.InvalidText)
            e.ErrorMessage = dialogMessage

            '  Assign the culture-specific caption to the ErrorMessageCaption property.
            e.ErrorMessageCaption = dialogCaption

        Else

            '  Display a MessageBox with a 'Question' icon and Yes/No buttons
            '  if the end user elects not to type a different path, set the
            '  StayInEditMode property of the event arguments to false so the
            '  control is brought out of edit mode.
            dialogMessage = String.Format("The string '{0}' could not be parsed into a location. Would you like to try again?", e.InvalidText)
            Dim result As DialogResult = MessageBox.Show(dialogMessage, e.ErrorMessageCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Question)

            Select Case result

                Case DialogResult.No
                    e.StayInEditMode = False

            End Select
        End If

    End Sub

    ' <summary>
    ' Handles the UltraNavigationBar's 'EnteredEditMode' event.
    ' </summary>
    Private Sub OnNavigationBarEnteredEditMode(ByVal sender As Object, ByVal e As EditModeEventArgs)

        Dim navigationBar As UltraNavigationBar = sender
        Dim editor As EmbeddableEditorBase = navigationBar.Editor
        Dim navigationPath As String = editor.CurrentEditText

        '  Separate each node in the path by splitting on the path separator
        Dim locations As String() = navigationPath.Split(navigationBar.PathSeparator.ToCharArray())

        '  Set the editor's SelectionLength and SelectionStart properties so
        '  that only the text of the last location in the path is selected.
        editor.SelectionLength = locations(locations.Length - 1).Length
        editor.SelectionStart = navigationPath.Length - editor.SelectionLength
    End Sub
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;

    private const int LCID_SPAIN = 3082;
    private const int LCID_FRANCE = 1036;
    private const int LCID_GERMANY = 1031;

    /// <summary>
    /// Handles the UltraNavigationBar's 'NavigationPathParseError' event.
    /// </summary>
    void OnNavigationBarNavigationPathParseError(object sender, NavigationPathParseErrorEventArgs e)
    {
        string dialogMessage = string.Empty;
        string dialogCaption = string.Empty;


        //  Determine whether we specifically recognize the current culture
        CultureInfo culture = System.Globalization.CultureInfo.CurrentCulture;

        //  If a culture that you would like to support in your application
        //  is not cased here, don't panic - more language conversions are
        //  available courtesy of AltaVista's Babel Fish Translation
        //  (http://babelfish.altavista.com)
        switch ( culture.LCID )
        {
            case LCID_SPAIN:
            {
                dialogMessage = "La trayectoria especificada no existe.";
                dialogCaption = "Error";
            }
            break;

            case LCID_FRANCE:
            {
                dialogMessage = "Le chemin indiqué n'existe pas.";
                dialogCaption = "Erreur";
            }
            break;

            case LCID_GERMANY:
            {
                dialogMessage = "Der spezifizierte Weg besteht nicht.";
                dialogCaption = "Störung";
            }
            break;

        }

        //  If we specifically recognized the current culture, display the default
        //  dialog with a culture-specific error message and caption.
        e.DisplayErrorMessage = dialogMessage.Length > 0;

        if ( e.DisplayErrorMessage )
        {
            //  Append the invalid text to the dialog message, and assign
            //  it to the ErrorMessage property of the event arguments.
            dialogMessage = string.Format("{0}{1}('{2}')", dialogMessage, Environment.NewLine, e.InvalidText);
            e.ErrorMessage = dialogMessage;

            //  Assign the culture-specific caption to the ErrorMessageCaption property.
            e.ErrorMessageCaption = dialogCaption;
        }
        else
        {
            //  Display a MessageBox with a 'Question' icon and Yes/No buttons;
            //  if the end user elects not to type a different path, set the
            //  StayInEditMode property of the event arguments to false so the
            //  control is brought out of edit mode.
            dialogMessage = string.Format( "The string '{0}' could not be parsed into a location. Would you like to try again?", e.InvalidText );
            DialogResult result = MessageBox.Show( dialogMessage, e.ErrorMessageCaption, MessageBoxButtons.YesNo, MessageBoxIcon.Question );

            switch ( result )
            {
                case DialogResult.No:
                {                        
                    e.StayInEditMode = false;
                }
                break;
            }
        }

    }

    /// <summary>
    /// Handles the UltraNavigationBar's 'EnteredEditMode' event.
    /// </summary>
    void OnNavigationBarEnteredEditMode(object sender, EditModeEventArgs e)
    {
        UltraNavigationBar navigationBar = sender as UltraNavigationBar;
        EmbeddableEditorBase editor = navigationBar.Editor;
        string navigationPath = editor.CurrentEditText;

        //  Separate each node in the path by splitting on the path separator
        string[] locations = navigationPath.Split( navigationBar.PathSeparator.ToCharArray() );

        //  Set the editor's SelectionLength and SelectionStart properties so
        //  that only the text of the last location in the path is selected.
        editor.SelectionLength = locations[locations.Length - 1].Length;
        editor.SelectionStart = navigationPath.Length - editor.SelectionLength;
    }
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