IRawElementProviderFragment.Navigate(NavigateDirection) Metod

Definition

Hämtar UI Automation-elementet i en angiven riktning i trädet.

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

Parametrar

direction
NavigateDirection

I vilken riktning du ska navigera.

Returer

Elementet i den angivna riktningen eller null om det inte finns något element i den riktningen.

Exempel

Följande exempelkod visar implementeringen av Navigate av en fragmentrot som har ett enda underordnat element. Eftersom implementeringselementet är en fragmentrot aktiverar det inte navigering till ett överordnat element eller syskonelement.

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

I följande exempel visas en implementering av ett fragment som representerar ett enskilt objekt i en listruta. I det här fallet aktiverar elementet navigering till dess överordnade och syskon, men inte till några underordnade.

/// <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

Kommentarer

UI Automation-serverns implementeringar av den här metoden definierar strukturen för UI Automation-elementträdet.

Navigeringen måste stödjas uppåt till den överordnade, nedåt till det första och sista barnet, och i sidled till nästa och tidigare syskon, i tillämpliga fall.

Varje underordnad nod har bara en överordnad nod och måste placeras i kedjan med syskon som nås från den överordnade noden av FirstChild och LastChild.

Relationer mellan syskon måste vara identiska i båda riktningarna: om A är B är PreviousSiblingB är B A: s NextSibling. A FirstChild har nej PreviousSibling, och en LastChild har ingen NextSibling.

Fragmentrötter aktiverar inte navigering till en överordnad eller syskon; navigering mellan fragmentrötter hanteras av standardfönsterprovidrar. Element i fragment får bara navigera till andra element i fragmentet.

Gäller för

Se även