Partager via


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

RemarqueRemarque

Cette documentation s'adresse aux développeurs .NET Framework qui veulent utiliser les classes UI Automation managées définies dans l'espace de noms System.Windows.Automation.Pour obtenir les informations les plus récentes sur UI Automation, consultez API Windows Automation : UI Automation (page éventuellement en anglais).

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 le 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.

Remarque AttentionAttention

Il est fortement recommandé que le client n'utilise pas GetSupportedPatterns.Les performances peuvent être gravement affectées, 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 qui l'intéressent le plus.

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

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

  2. Appelez GetCurrentPattern ou TryGetCurrentPattern pour demander un modèle spécifique. Ces méthodes sont semblables, mais si le modèle est introuvable, GetCurrentPattern déclenche une exception et TryGetCurrentPattern retourne false.

Exemple

L'exemple suivant récupère un AutomationElement pour un élément de liste et obtient un SelectionItemPattern 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 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
/// <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();
    }
}

Voir aussi

Concepts

Modèles de contrôle UI Automation pour les clients