IRawElementProviderFragment.Navigate(NavigateDirection) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Retrieves the UI Automation element in a specified direction within the tree.
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
Parameters
- direction
- NavigateDirection
The direction in which to navigate.
Returns
The element in the specified direction, or null
if there is no element in that direction.
Examples
The following example code shows the implementation of Navigate by a fragment root that has a single child element. Because the implementing element is a fragment root, it does not enable navigation to a parent element or sibling elements.
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
The following example shows an implementation by a fragment that represents a single item within a list box. In this case, the element enables navigation to its parent and siblings, but not to any children.
/// <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
Remarks
The UI Automation server's implementations of this method define the structure of the UI Automation element tree.
Navigation must be supported upward to the parent, downward to the first and last child, and laterally to the next and previous siblings, as applicable.
Each child node has only one parent and must be placed in the chain of siblings reached from the parent by FirstChild and LastChild.
Relationships among siblings must be identical in both directions: if A is B's PreviousSibling, then B is A's NextSibling. A FirstChild has no PreviousSibling, and a LastChild has no NextSibling.
Fragment roots do not enable navigation to a parent or siblings; navigation among fragment roots is handled by the default window providers. Elements in fragments must navigate only to other elements within that fragment.