Prise en charge d’UI Automation pour le glisser-déplacer
Microsoft UI Automation définit deux modèles de contrôle pour la prise en charge des scénarios de glisser-déplacer, le modèle de contrôle Drag et le modèle de contrôle dropTarget . Vous implémentez le modèle de contrôle Drag pour un élément qui peut être glissé, et le modèle de contrôle DropTarget pour un élément qui peut recevoir un élément glissé ; autrement dit, une cible de déplacement. Les deux modèles de contrôle exposent des informations qu’une technologie d’assistance peut utiliser pour aider un utilisateur d’accessibilité à effectuer une opération de glisser-déplacer.
- Faire glisser des styles
- Faire glisser plusieurs éléments
- Interfaces clientes pour le glisser-déplacer
Faire glisser des styles
Lorsque vous implémentez le modèle de contrôle Drag pour un élément déplaçable, vous devez décider s’il faut implémenter le style de glissement source/cible , ou le style de glissement source uniquement .
Style source/cible
Dans le style source/cible de glisser-déplacer, l’élément déplacé (la « source ») et l’élément cible (« cible ») sont distincts et chacun d’eux déclenche un ensemble d’événements distincts. Voici le cycle de vie d’une opération glisser qui utilise le style source/cible :
- Lorsque l’utilisateur démarre une opération glisser :
- La source déclenche l’événement DragStart (UIA _ Drag _ DragStartEventId).
- La source définit la propriété IDragProvider :: IsGrabbed sur true.
- Les cibles mettent à jour leurs propriétés DropTargetEffect .
- La cible déclenche l’événement DragEnter (UIA _ dropTarget _ DragEnterEventId).
- La cible déclenche l’événement DragLeave (UIA _ dropTarget _ DragLeaveEventId).
- La source déclenche l’événement DragCancel (UIA _ Drag _ DragCancelEventId).
- La source affecte la valeur false à la propriété IDragProvider :: IsGrabbed .
- La source déclenche l’événement DragComplete (UIA _ Drag _ DragCompleteEventId).
- La source affecte la valeur false à la propriété IDragProvider :: IsGrabbed .
- La cible définit la propriété IDropTargetProvider ::D roptargeteffect pour indiquer l’effet qui s’est produit.
- La cible déclenche l’événement supprimé (UIA _ dropTarget _ DroppedEventId).
Lorsque l’opération glisser entre dans une région cible :
Lorsque l’opération glisser quitte une région cible :
Lorsque l’utilisateur relâche l’élément déplacé sur une non-cible :
Lorsque l’utilisateur relâche l’élément déplacé sur une cible :
Les événements des objets source et cible sont étroitement liés, mais distincts. Les données relatives à ce qui est glissé proviennent de la source, tandis que les données relatives à « ce qui pourrait se produire » et à « ce qui se passe » proviennent de la cible.
Quand une opération glisser est en cours, l’élément déplacé peut être glissé dans et hors des régions cibles, le nombre de fois où l’opération se termine.
Toute cible de déplacement qui doit mettre à jour sa propriété IDropTargetProvider ::D roptargeteffect à la volée doit déclencher un événement de modification de propriété supplémentaire sur cette propriété.
Style source uniquement
Le style de glissement source uniquement permet à un fournisseur d’éviter d’implémenter des cibles de dépôt. Le fait de ne pas implémenter des cibles de dépôt réduit le coût d’implémentation, mais ne donne pas aux applications clientes d’accessibilité des informations sur l’objet qui a reçu la suppression. Voici le cycle de vie d’une opération glisser qui utilise le style source uniquement :
- Lorsque l’utilisateur démarre une opération glisser :
- La source déclenche l’événement DragStart (UIA _ Drag _ DragStartEventId).
- La source définit la propriété IDragProvider :: IsGrabbed sur true.
- La source définit la propriété IDragProvider ::D ropeffect sur la valeur appropriée.
- La source définit la propriété IDragProvider ::D ropeffect sur la valeur appropriée.
- La source déclenche l’événement DragCancel (UIA _ Drag _ DragCancelEventId).
- La source affecte la valeur false à la propriété IDragProvider :: IsGrabbed .
- La source déclenche l’événement DragComplete (UIA _ Drag _ DragCompleteEventId).
- La source définit la propriété IDragProvider ::D ropeffect pour indiquer l’effet qui a eu lieu quand l’élément a été supprimé.
Lorsque l’opération glisser entre dans une région cible :
Lorsque l’opération glisser quitte une région cible :
Lorsque l’utilisateur relâche l’élément déplacé sur une non-cible :
Lorsque l’utilisateur relâche l’élément déplacé sur une cible :
Faire glisser plusieurs éléments
Si un fournisseur implémente des opérations de glisser-déplacer où l’utilisateur peut faire glisser plusieurs objets en même temps, le fournisseur utilise les styles source/cible ou source uniquement comme décrit dans la section précédente, mais avec une petite différence. Lorsque l’utilisateur commence l’opération glisser, le fournisseur crée un élément source maître qui représente le jeu complet d’éléments qui sont glissés. L’élément source maître déclenche tous les événements pour le compte du jeu d’éléments déplacés ; les éléments ne déclenchent aucun événement propre.
- Lorsque l’utilisateur démarre une opération glisser :
- Le fournisseur crée l’élément source maître.
- L’élément source maître déclenche l’événement DragStart (UIA _ Drag _ DragStartEventId).
- L’élément source maître définit la propriété IDragProvider :: IsGrabbed sur true.
- L’élément source maître met à jour la liste des éléments récupérés pour inclure tous les éléments déplacés afin que la méthode GetGrabbedItems puisse récupérer la liste.
Pour ce point, l’élément source maître remplit le même rôle que celui de l’élément source, comme décrit dans la section précédente.
Interfaces clientes pour le glisser-déplacer
Les applications clientes UI Automation utilisent les interfaces IUIAutomationDragPattern et IUIAutomationDropTargetPattern pour accéder aux informations de glisser-déplacer à partir d’éléments d’interface utilisateur.