IRawElementProviderFragment.Navigate(NavigateDirection) Метод

Определение

Извлекает элемент модель автоматизации пользовательского интерфейса в указанном направлении в дереве.

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

Параметры

direction
NavigateDirection

Направление, по которому следует перемещаться.

Возвращаемое значение

IRawElementProviderFragment

Элемент в указанном направлении или null нет элемента в этом направлении.

Примеры

В следующем примере кода показана реализация корня фрагмента Navigate с одним дочерним элементом. Так как реализующий элемент является корневым элементом фрагмента, он не позволяет переходить к родительскому элементу или элементам уровня.

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

В следующем примере показана реализация фрагмента, представляющего один элемент в списке. В этом случае элемент позволяет переходить к родительскому элементу и одноуровневому элементу, но не к дочерним элементам.

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

Комментарии

Реализации этого метода модель автоматизации пользовательского интерфейса сервера определяют структуру дерева элементов модель автоматизации пользовательского интерфейса.

Навигация должна поддерживаться вверх к родительскому элементу, вниз до первого и последнего дочерних элементов, а затем к следующему и предыдущему братьям и сестрам, как применимо.

Каждый дочерний узел имеет только один родительский узел и должен быть помещен в цепочку одноуровневых элементов, достигнутых от родительского FirstChild узла и LastChild.

Связи между братьями и сестрами должны быть одинаковыми в обоих направлениях: если A является B PreviousSibling, то B — это A NextSibling. У FirstChild нее нет PreviousSibling, и LastChild нет NextSibling.

Корневы фрагментов не позволяют переходить к родительскому или одноуровневого элементам; Навигация между корнями фрагментов обрабатывается поставщиками окон по умолчанию. Элементы в фрагментах должны переходить только к другим элементам в этом фрагменте.

Применяется к

См. также раздел