Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

Get Supported UI Automation Control Patterns

Note Note

This documentation is intended for .NET Framework developers who want to use the managed UI Automation classes defined in the System.Windows.Automation namespace. For the latest information about UI Automation, see Windows Automation API: UI Automation.

This topic shows how to retrieve control pattern objects from UI Automation elements.

Obtain All Control Patterns

  1. Get the AutomationElement whose control patterns you are interested in.

  2. Call GetSupportedPatterns to get all control patterns from the element.

Caution note Caution

It is strongly recommended that a client not use GetSupportedPatterns. Performance can be severely affected as this method calls GetCurrentPattern internally for each existing control pattern. If possible, a client should call GetCurrentPattern for the key patterns of interest.

Obtain a Specific Control Pattern

  1. Get the AutomationElement whose control patterns you are interested in.

  2. Call GetCurrentPattern or TryGetCurrentPattern to query for a specific pattern. These methods are similar, but if the pattern is not found, GetCurrentPattern raises an exception, and TryGetCurrentPattern returns false.

The following example retrieves an AutomationElement for a list item and obtains a SelectionItemPattern from that element.

''' <summary> 
''' Sets the focus to a list and selects a string item in that list. 
''' </summary> 
''' <param name="listElement">The list element.</param> 
''' <param name="itemText">The text to select.</param> 
''' <remarks> 
''' This deselects any currently selected items. To add the item to the current selection  
''' in a multiselect list, use AddToSelection instead of Select. 
''' </remarks> 
Public Sub SelectListItem(ByVal listElement As AutomationElement, ByVal itemText As String)
    If listElement Is Nothing OrElse itemText = "" Then 
        Throw New ArgumentException("Argument cannot be null or empty.")
    End If
    listElement.SetFocus()
    Dim cond As New PropertyCondition(AutomationElement.NameProperty, itemText, PropertyConditionFlags.IgnoreCase)
    Dim elementItem As AutomationElement = listElement.FindFirst(TreeScope.Children, cond)
    If Not (elementItem Is Nothing) Then 
        Dim pattern As SelectionItemPattern
        Try
            pattern = DirectCast(elementItem.GetCurrentPattern(SelectionItemPattern.Pattern), _
                SelectionItemPattern)
        Catch ex As InvalidOperationException
            Console.WriteLine(ex.Message) ' Most likely "Pattern not supported." 
            Return 
        End Try
        pattern.Select()
    End If 

End Sub 'SelectListItem
Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.