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
Направление, по которому следует перемещаться.
Возвращаемое значение
Элемент в указанном направлении или 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.
Корневы фрагментов не позволяют переходить к родительскому или одноуровневого элементам; Навигация между корнями фрагментов обрабатывается поставщиками окон по умолчанию. Элементы в фрагментах должны переходить только к другим элементам в этом фрагменте.