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
Obtenez l’élément AutomationElement dont les modèles de contrôle vous intéressent.
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
Obtenez l’élément AutomationElement dont les modèles de contrôle vous intéressent.
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