Implémentation du modèle de contrôle Selection 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 ISelectionProvider, 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 SelectionPattern permet de prendre en charge les contrôles qui agissent comme des conteneurs pour une collection d’éléments enfants sélectionnables. Les enfants de cet élément doivent implémenter ISelectionItemProvider. Pour obtenir des exemples de contrôles implémentant ce modèle de contrôle, consultez Control Pattern Mapping for UI Automation Clients.

Conventions et directives d'implémentation

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

  • Les contrôles qui implémentent ISelectionProvider autorisent la sélection d’un ou de plusieurs éléments enfants. Par exemple, les contrôles de zone de liste, d’affichage de liste et d’arborescence prennent en charge les sélections multiples, alors que les contrôles de zone de liste déroulante, de curseur et de groupe de cases d’option prennent en charge la sélection unique.

  • Les contrôles dotés d’une plage minimale, maximale et continue, tels que le contrôle de curseur Volume , doivent implémenter IRangeValueProvider au lieu de ISelectionProvider.

  • Les contrôles à sélection unique qui gèrent des contrôles enfants qui implémentent IRawElementProviderFragmentRoot, tels que le contrôle de curseur Résolution d’écran dans la boîte de dialogue Propriétés d’affichage ou le contrôle de sélection Sélecteur de couleurs de Microsoft Word (illustré ci-dessous), doivent implémenter ISelectionProvider. Leurs enfants doivent implémenter IRawElementProviderFragment et ISelectionItemProvider.

Color picker with yellow highlighted. Exemple de mappage d’une chaîne d’échantillons de couleurs

  • Les menus ne prennent pas en charge SelectionPattern. Si vous utilisez des éléments de menu qui incluent à la fois des graphiques et du texte (tels que les éléments du Volet de visualisation du menu Affichage de Microsoft Outlook) et que vous avez besoin de transmettre l’état, vous devez implémenter IToggleProvider.

Membres requis pour ISelectionProvider

Les propriétés, méthodes et événements suivants sont obligatoires pour l’interface ISelectionProvider .

Membres nécessaires Type Notes
CanSelectMultiple Propriété Doit prendre en charge les événements de modification de propriété à l’aide de AddAutomationPropertyChangedEventHandler et RemoveAutomationPropertyChangedEventHandler.
IsSelectionRequired Propriété Doit prendre en charge les événements de modification de propriété à l’aide de AddAutomationPropertyChangedEventHandler et RemoveAutomationPropertyChangedEventHandler.
GetSelection Méthode Aucun
InvalidatedEvent Événement Déclenché lorsqu’une sélection a changé de manière significative dans un conteneur et requiert l’envoi d’un plus grand nombre d’événements d’ajout et de suppression que la constante InvalidateLimit ne le permet.

Les propriétés IsSelectionRequired et CanSelectMultiple peuvent être dynamiques. Par exemple, l’état initial d’un contrôle peut ne présenter aucun élément sélectionné par défaut, indiquant que IsSelectionRequired a la valeur false. Toutefois, une fois qu’un élément a été sélectionné, le contrôle doit toujours avoir au moins un élément sélectionné. De la même façon, dans quelques cas rares, un contrôle peut autoriser la sélection de plusieurs éléments lors de l’initialisation, mais n’autoriser par la suite que des sélections uniques.

Exceptions

Les fournisseurs doivent lever les exceptions suivantes.

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

Voir aussi