AutomationElement.FindFirst(TreeScope, Condition) Méthode

Définition

Retourne le premier élément enfant ou descendant qui correspond à la condition spécifiée.

public:
 System::Windows::Automation::AutomationElement ^ FindFirst(System::Windows::Automation::TreeScope scope, System::Windows::Automation::Condition ^ condition);
public System.Windows.Automation.AutomationElement FindFirst (System.Windows.Automation.TreeScope scope, System.Windows.Automation.Condition condition);
member this.FindFirst : System.Windows.Automation.TreeScope * System.Windows.Automation.Condition -> System.Windows.Automation.AutomationElement
Public Function FindFirst (scope As TreeScope, condition As Condition) As AutomationElement

Paramètres

scope
TreeScope

Combinaison d'opérations de bits de valeurs qui spécifient la portée de la recherche.

condition
Condition

Objet contenant les critères à satisfaire.

Retours

Premier élément qui satisfait la condition, ou null si aucune correspondance n'est trouvée.

Exemples

L’exemple suivant montre comment rechercher une fenêtre enfant à partir de son identificateur.

/// <summary>
/// Find a UI Automation child element by ID.
/// </summary>
/// <param name="controlName">Name of the control, such as "button1"</param>
/// <param name="parentElement">Parent element, such as an application window, or the 
/// AutomationElement.RootElement when searching for the application window.</param>
/// <returns>The UI Automation element.</returns>
private AutomationElement FindChildElement(String controlName, AutomationElement rootElement)
{
    if ((controlName == "") || (rootElement == null))
    {
        throw new ArgumentException("Argument cannot be null or empty.");
    }
    // Set a property condition that will be used to find the main form of the
    // target application. In the case of a WinForms control, the name of the control
    // is also the AutomationId of the element representing the control.
    Condition propCondition = new PropertyCondition(
        AutomationElement.AutomationIdProperty, controlName, PropertyConditionFlags.IgnoreCase);

    // Find the element.
    return rootElement.FindFirst(TreeScope.Element | TreeScope.Children, propCondition);
}
''' <summary>
''' Find a UI Automation child element by ID.
''' </summary>
''' <param name="controlName">Name of the control, such as "button1"</param>
''' <param name="rootElement">Parent element, such as an application window, or the 
''' AutomationElement.RootElement when searching for the application window.</param>
''' <returns>The UI Automation element.</returns>
Private Function FindChildElement(ByVal controlName As String, ByVal rootElement As AutomationElement) _
    As AutomationElement
    If controlName = "" OrElse rootElement Is Nothing Then
        Throw New ArgumentException("Argument cannot be null or empty.")
    End If
    ' Set a property condition that will be used to find the main form of the
    ' target application. In the case of a WinForms control, the name of the control
    ' is also the AutomationId of the element representing the control.
    Dim propCondition As New PropertyCondition(AutomationElement.AutomationIdProperty, _
        controlName, PropertyConditionFlags.IgnoreCase)

    ' Find the element.
    Return rootElement.FindFirst(TreeScope.Element Or TreeScope.Children, propCondition)

End Function 'FindChildElement

Remarques

L’étendue de la recherche est relative à l’élément sur lequel la méthode est appelée.

Lorsque vous recherchez une fenêtre de niveau supérieur sur le bureau, veillez à spécifier Children dans scope, et non Descendantsdans . Une recherche dans l’ensemble de la sous-arborescence du bureau peut itérer à travers des milliers d’éléments et entraîner un dépassement de capacité de la pile.

Si votre application cliente peut essayer de trouver des éléments dans sa propre interface utilisateur, vous devez effectuer tous les appels UI Automation sur un thread distinct.

S’applique à

Voir aussi