Obtenir des modèles de contrôle UI Automation pris en charge

Notes

Cette documentation s’adresse aux développeurs .NET Framework qui souhaitent utiliser les classes UI Automation managées définies dans l’espace de noms System.Windows.Automation. Pour obtenir les dernières informations sur UI Automation, consultez API Windows Automation : UI Automation.

Cette rubrique montre comment récupérer des objets de modèle de contrôle à partir d’éléments UI Automation.

Obtenir tous les modèles de contrôle

  1. Obtenez l’élément AutomationElement dont les modèles de contrôle vous intéressent.

  2. Appelez GetSupportedPatterns pour obtenir tous les modèles de contrôle de l’élément.

Attention

Il est fortement déconseillé d’utiliser GetSupportedPatterns sur un client. Cela peut dégrader sérieusement les performances, car cette méthode appelle GetCurrentPattern en interne pour chaque modèle de contrôle existant. Si possible, un client doit appeler GetCurrentPattern pour les modèles les plus intéressants.

Obtenir un modèle de contrôle spécifique

  1. Obtenez l’élément AutomationElement dont les modèles de contrôle vous intéressent.

  2. Appelez GetCurrentPattern ou TryGetCurrentPattern pour rechercher un modèle spécifique. Ces méthodes sont similaires, mais si le modèle est introuvable, GetCurrentPattern lève une exception et TryGetCurrentPattern retourne la valeur false.

Exemple

L’exemple suivant récupère un élément AutomationElement pour un élément de liste et obtient un modèle SelectionItemPattern à partir de cet élément.

/// <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 void SelectListItem(AutomationElement listElement, String itemText)
{
    if ((listElement == null) || (itemText == ""))
    {
        throw new ArgumentException("Argument cannot be null or empty.");
    }
    listElement.SetFocus();
    Condition cond = new PropertyCondition(
        AutomationElement.NameProperty, itemText, PropertyConditionFlags.IgnoreCase);
    AutomationElement elementItem = listElement.FindFirst(TreeScope.Children, cond);
    if (elementItem != null)
    {
        SelectionItemPattern pattern;
        try
        {
            pattern = elementItem.GetCurrentPattern(SelectionItemPattern.Pattern) as SelectionItemPattern;
        }
        catch (InvalidOperationException ex)
        {
            Console.WriteLine(ex.Message);  // Most likely "Pattern not supported."
            return;
        }
        pattern.Select();
    }
}
''' <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

Voir aussi