IRawElementProviderFragment.Navigate(NavigateDirection) Metoda

Definicja

Pobiera element automatyzacja interfejsu użytkownika w określonym kierunku w drzewie.

public:
 System::Windows::Automation::Provider::IRawElementProviderFragment ^ Navigate(System::Windows::Automation::Provider::NavigateDirection direction);
public System.Windows.Automation.Provider.IRawElementProviderFragment Navigate (System.Windows.Automation.Provider.NavigateDirection direction);
abstract member Navigate : System.Windows.Automation.Provider.NavigateDirection -> System.Windows.Automation.Provider.IRawElementProviderFragment
Public Function Navigate (direction As NavigateDirection) As IRawElementProviderFragment

Parametry

direction
NavigateDirection

Kierunek nawigacji.

Zwraca

IRawElementProviderFragment

Element w określonym kierunku lub null jeśli w tym kierunku nie ma żadnego elementu.

Przykłady

Poniższy przykładowy kod przedstawia implementację elementu głównego fragmentu Navigate z pojedynczym elementem podrzędnym. Ponieważ element implementowania jest elementem głównym fragmentu, nie umożliwia nawigacji do elementów nadrzędnych ani elementów równorzędnych.

IRawElementProviderFragment IRawElementProviderFragment.Navigate(NavigateDirection direction)
{
    if ((direction == NavigateDirection.FirstChild)
        || (direction == NavigateDirection.LastChild)) 
    {
        // Return the provider that is the sole child of this one.
        return (IRawElementProviderFragment)ChildControl;
    }
    else
    {
        return null;
    };
}
Function Navigate(ByVal direction As NavigateDirection) As IRawElementProviderFragment _
    Implements IRawElementProviderFragment.Navigate

    If direction = NavigateDirection.FirstChild _
        OrElse direction = NavigateDirection.LastChild Then
        ' Return the provider that is the sole child of this one.
        Return CType(ChildControl, IRawElementProviderFragment)
    Else
        Return Nothing
    End If

End Function 'IRawElementProviderFragment.Navigate

W poniższym przykładzie pokazano implementację według fragmentu reprezentującego pojedynczy element w polu listy. W tym przypadku element umożliwia nawigację do elementu nadrzędnego i równorzędnego, ale nie do żadnych elementów podrzędnych.

/// <summary>
/// Navigate to adjacent elements in the automation tree.
/// </summary>
/// <param name="direction">Direction to navigate.</param>
/// <returns>The element in that direction, or null.</returns>
/// <remarks>
/// parentControl is the provider for the list box.
/// parentItems is the collection of list item providers.
/// </remarks>
public IRawElementProviderFragment Navigate(NavigateDirection direction)
{
    int myIndex = parentItems.IndexOf(this);
    if (direction == NavigateDirection.Parent)
    {
        return (IRawElementProviderFragment)parentControl;
    }
    else if (direction == NavigateDirection.NextSibling)
    {
        if (myIndex < parentItems.Count - 1)
        {
            return (IRawElementProviderFragment)parentItems[myIndex + 1];
        }
        else
        {
            return null;
        }
    }
    else if (direction == NavigateDirection.PreviousSibling)
    {
        if (myIndex > 0)
        {
            return (IRawElementProviderFragment)parentItems[myIndex - 1];
        }
        else
        {
            return null;
        }
    }
    else
    {
        return null;
    }
}
''' <summary>
''' Navigate to adjacent elements in the automation tree.
''' </summary>
''' <param name="direction">Direction to navigate.</param>
''' <returns>The element in that direction, or null.</returns>
''' <remarks>
''' parentControl is the provider for the list box.
''' parentItems is the collection of list item providers.
''' </remarks>
Public Function Navigate(ByVal direction As NavigateDirection) As IRawElementProviderFragment _
    Implements IRawElementProviderFragment.Navigate

    Dim myIndex As Integer = parentItems.IndexOf(Me)
    If direction = NavigateDirection.Parent Then
        Return DirectCast(parentControl, IRawElementProviderFragment)
    ElseIf direction = NavigateDirection.NextSibling Then
        If myIndex < parentItems.Count - 1 Then
            Return DirectCast(parentItems((myIndex + 1)), IRawElementProviderFragment)
        Else
            Return Nothing
        End If
    ElseIf direction = NavigateDirection.PreviousSibling Then
        If myIndex > 0 Then
            Return DirectCast(parentItems((myIndex - 1)), IRawElementProviderFragment)
        Else
            Return Nothing
        End If
    Else
        Return Nothing
    End If

End Function 'Navigate

Uwagi

Implementacje serwera automatyzacja interfejsu użytkownika tej metody definiują strukturę drzewa elementów automatyzacja interfejsu użytkownika.

Nawigacja musi być obsługiwana w górę do elementu nadrzędnego, w dół do pierwszego i ostatniego elementu podrzędnego, a następnie do następnego i poprzedniego elementu równorzędnego, zgodnie z zastosowaniem.

Każdy węzeł podrzędny ma tylko jeden element nadrzędny i musi zostać umieszczony w łańcuchu elementów równorzędnych pochodzących z elementu nadrzędnego przez FirstChild elementy i LastChild.

Relacje między elementami równorzędnymi muszą być identyczne w obu kierunkach: jeśli wartość A to B PreviousSibling, to B to NextSibling. Element FirstChild nie PreviousSiblingma wartości , a element LastChild nie NextSiblingma wartości .

Katalogi główne fragmentów nie umożliwiają nawigacji do elementu nadrzędnego lub równorzędnego; nawigacja między elementami nadrzędnymi fragmentów jest obsługiwana przez domyślnych dostawców okien. Elementy w fragmentach muszą przechodzić tylko do innych elementów w tym fragmentowaniu.

Dotyczy

Zobacz też