Implémentation du modèle de contrôle Invoke d’UI Automation

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 présente les conventions et recommandations à respecter pour implémenter IInvokeProvider, notamment des informations sur les événements et les propriétés. Des liens vers des références supplémentaires sont répertoriés à la fin de la rubrique.

Le modèle de contrôle InvokePattern est utilisé pour prendre en charge les contrôles qui ne conservent pas l’état lorsqu’ils sont activés, mais qui initialisent ou exécutent plutôt une action unique et non équivoque. Les contrôles qui conservent l’état, tels que les cases à cocher et les cases d’option, doivent implémenter respectivement IToggleProvider et ISelectionItemProvider à la place. Pour obtenir des exemples de contrôles qui implémentent le modèle de contrôle Invoke, consultez Control Pattern Mapping for UI Automation Clients.

Conventions et directives d'implémentation

Quand vous implémentez le modèle de contrôle Invoke, notez les conventions et recommandations suivantes :

  • Les contrôles implémentent IInvokeProvider si le même comportement n’est pas exposé par le biais d’un autre fournisseur de modèle de contrôle. Par exemple, si la méthode Invoke exécute, sur un contrôle, la même action que la méthode Expand ou Collapse , le contrôle ne doit pas implémenter IInvokeProvider.

  • Pour appeler un contrôle, il convient généralement de cliquer, de double-cliquer ou d’appuyer sur Entrée, sur un raccourci clavier prédéfini ou sur une autre combinaison de touches.

  • InvokedEvent est déclenché sur un contrôle qui a été activé (en réponse à un contrôle effectuant l’action qui lui est associée). Si possible, l’événement doit être déclenché une fois que le contrôle a terminé l’action et retourné une valeur sans se bloquer. L’événement Invoked doit être déclenché avant de prendre en charge la requête Invoke dans les scénarios suivants :

    • Il n’est pas possible ou pratique d’attendre que l’action soit terminée.

    • L’action requiert une intervention de l’utilisateur.

    • L’action prend du temps et bloque le client pendant un long moment.

  • Si l’appel du contrôle entraîne des effets secondaires significatifs, ces effets secondaires doivent être exposés via la propriété HelpText . Par exemple, bien que la méthode Invoke ne soit pas associée à la sélection, Invoke peut entraîner la sélection d’un autre contrôle.

  • Les effets du pointage (ou du pointage avec la souris) ne constituent généralement pas un événement Invoked. Toutefois, les contrôles qui exécutent une action (et non pas un effet visuel) basée sur l’état de pointage doivent prendre en charge le modèle de contrôle InvokePattern .

Notes

Cette implémentation est considérée comme un problème d’accessibilité si le contrôle ne peut être appelé que suite à un effet secondaire lié à la souris.

  • L’appel d’un contrôle est différent de la sélection d’un élément. Toutefois, selon le contrôle, l’appel peut avoir comme effet secondaire la sélection de l’élément. Par exemple, l’appel d’un élément de liste de documents Microsoft Word dans le dossier Mes documents permet de sélectionner l’élément et d’ouvrir le document.

  • Un élément peut disparaître de l’arborescence UI Automation immédiatement après avoir été appelé. La requête d’informations de l’élément fourni par le rappel d’événement peut échouer. La pré-récupération des informations mises en cache est la solution recommandée.

  • Les contrôles peuvent implémenter plusieurs modèles de contrôle. Par exemple, le contrôle Couleur de remplissage de la barre d’outils Microsoft Excel implémente les modèles de contrôle InvokePattern et ExpandCollapsePattern. ExpandCollapsePattern expose le menu et le InvokePattern remplit la sélection active de la couleur choisie.

Membres requis pour IInvokeProvider

Les propriétés et méthodes suivantes sont nécessaires à l'implémentation d' IInvokeProvider.

Membres nécessaires Type de membre Notes
Invoke method Invoke est un appel asynchrone et doit retourner immédiatement une valeur sans se bloquer.

Ce comportement est particulièrement critique pour les contrôles qui, directement ou indirectement, lancent une boîte de dialogue modale lorsqu’ils sont appelés. Tout client UI Automation à l’origine de l’événement reste bloqué jusqu’à la fermeture de la boîte de dialogue modale.

Exceptions

Les fournisseurs doivent lever les exceptions suivantes.

Type d’exception Condition
ElementNotEnabledException Si le contrôle n’est pas activé.

Voir aussi