Obtenir des modèles de contrôle UI Automation pris en charge
Remarque |
---|
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
Obtenez le 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 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
Obtenez le AutomationElement dont les modèles de contrôle vous intéressent.
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();
}
}