Compartilhar via


Suporte à automação de interface do usuário para arrastar e soltar

A Automação de Interface do Usuário da Microsoft define dois padrões de controle para dar suporte a cenários de arrastar e soltar, o padrão de controle Arrastar e o padrão de controle DropTarget. Você implementa o padrão de controle Arrastar para um elemento que pode ser arrastado e o padrão de controle DropTarget para um elemento que pode receber um elemento arrastado; ou seja, um destino de soltar. Os dois padrões de controle expõem informações que uma tecnologia adaptativa pode usar para ajudar um usuário de acessibilidade a concluir uma operação de arrastar e soltar.

Estilos de arrastar

Ao implementar o padrão de controle Arrastar para um elemento arrastável, você precisa decidir se deseja implementar o estilo de arrastar de de origem/destino ou o estilo de arrastar somente origem.

Estilo de origem/destino

No estilo de origem/destino de arrastar e soltar, o elemento arrastado (a "origem") e o elemento drop-target (o "destino") são distintos e cada um gera um conjunto distinto de eventos. Este é o ciclo de vida de uma operação de arrastar que usa o estilo de origem/destino:

Quando o usuário inicia uma operação de arrastar:

  • A origem gera o evento DragStart (UIA_Drag_DragStartEventId).
  • A origem define a propriedadeIDragProvider::IsGrabbed para TRUE.
  • Os destinos atualizam suas propriedadesDropTargetEffect.

Quando a operação de arrastar entra em uma região de destino:

Quando a operação de arrastar deixa uma região de destino:

Quando o usuário libera o item arrastado sobre um não-destino:

  • A origem gera o evento DragCancel (UIA_Drag_DragCancelEventId).
  • A origem define a propriedadeIDragProvider::IsGrabbed como FALSE.

Quando o usuário libera o item arrastado sobre um destino:

  • A origem gera o evento DragComplete (UIA_Drag_DragCompleteEventId).
  • A origem define a propriedadeIDragProvider::IsGrabbed como FALSE.
  • O destino define a propriedadeIDropTargetProvider::D ropTargetEffect para indicar o efeito que ocorreu.
  • O destino gera o evento Dropped (UIA_DropTarget_DroppedEventId).

Os eventos dos objetos de origem e de destino estão intimamente relacionados, mas distintos. Os dados sobre o que está sendo arrastado vêm da origem, enquanto os dados sobre "o que poderia acontecer" e "o que aconteceu" vêm do destino.

Quando uma operação de arrastar está em andamento, o item arrastado pode ser arrastado para dentro e para fora das regiões de destino várias vezes antes da conclusão da operação.

Qualquer destino suspenso que precise atualizar sua propriedade IDropTargetProvider::D ropTargetEffect em tempo real deve gerar um evento de propriedade adicional alterado nessa propriedade.

Estilo somente origem

O estilo de arrastar somente origem permite que um provedor evite implementar destinos de descarte. A não implementação de destinos de descarte ajuda a reduzir o custo de implementação, mas não fornece aos aplicativos cliente de acessibilidade nenhuma informação sobre o objeto que recebeu a queda. Aqui está o ciclo de vida de uma operação de arrastar que usa o estilo somente de origem:

Quando o usuário inicia uma operação de arrastar:

  • A origem gera o evento DragStart (UIA_Drag_DragStartEventId).
  • A origem define a propriedadeIDragProvider::IsGrabbed para TRUE.

Quando a operação de arrastar entra em uma região de destino:

Quando a operação de arrastar deixa uma região de destino:

Quando o usuário libera o item arrastado sobre um não-destino:

  • A origem gera o evento DragCancel (UIA_Drag_DragCancelEventId).
  • A origem define a propriedadeIDragProvider::IsGrabbed como FALSE.

Quando o usuário libera o item arrastado sobre um destino:

Arrastando vários itens

Se um provedor implementar operações de arrastar e soltar em que o usuário pode arrastar vários objetos ao mesmo tempo, o provedor usará os estilos de origem/destino ou somente origem, conforme descrito na seção anterior, mas com uma pequena diferença. Quando o usuário inicia a operação de arrastar, o provedor cria um elemento de origem mestre que representa o conjunto completo de itens que estão sendo arrastados. O elemento de origem mestre gera todos os eventos em nome do conjunto de itens arrastados; os itens não geram eventos próprios.

Quando o usuário inicia uma operação de arrastar:

  • O provedor cria o elemento de origem mestre.
  • O elemento de origem mestre gera o evento DragStart (UIA_Drag_DragStartEventId).
  • O elemento de origem mestre define a propriedade IDragProvider::IsGrabbed para true.
  • O elemento de origem mestre atualiza a lista de itens pegos para incluir todos os itens que estão sendo arrastados para que o método GetGrabbedItems possa recuperar a lista.

Para esse ponto em diante, o elemento de origem mestre executa a mesma função que a do elemento de origem, conforme descrito na seção anterior.

Interfaces do cliente para arrastar e soltar

Os aplicativos cliente de Automação da Interface do Usuário usam oIUIAutomationDragPatterne interfaces IUIAutomationDropTargetPattern para acessar informações de arrastar e soltar de elementos da interface do usuário.