Поделиться через


Поддержка автоматизации пользовательского интерфейса для перетаскивания

Служба автоматизации пользовательского интерфейса Майкрософт определяет два шаблона элементов управления для поддержки сценариев перетаскивания, шаблона элемента управления перетаскивания и шаблона элемента управления DropTarget DropTarget. Вы реализуете шаблон элемента, который можно перетащить, и шаблон элемента управления DropTarget для элемента, который может получить перетаскиваемый элемент; то есть целевой объект удаления. Два шаблона элемента управления предоставляют сведения, которые могут использовать вспомогательные технологии, чтобы помочь пользователю специальных возможностей завершить операцию перетаскивания.

Перетаскивание стилей

При реализации шаблона элемента управления перетаскивания перетаскивания для перетаскиваемого элемента необходимо решить, следует ли реализовать стиль перетаскивания исходного или целевого или стиль перетаскивания только для источника.

Стиль источника и целевого объекта

В исходном или целевом стиле перетаскивания перетаскивание перетаскиваемый элемент (источник) и элемент drop-target (целевой объект) отличаются, и каждый вызывает отдельный набор событий. Ниже приведен жизненный цикл для операции перетаскивания, которая использует стиль исходного или целевого объекта:

Когда пользователь запускает операцию перетаскивания:

Когда операция перетаскивания вводит целевой регион:

Когда операция перетаскивания покидает целевой регион:

Когда пользователь освобождает перетаскиваемый элемент по не целевому объекту:

Когда пользователь освобождает перетаскиваемый элемент по целевому объекту:

События из исходных и целевых объектов тесно связаны, но отличаются. Данные о том, что перетаскивается из источника, в то время как данные о том, что может произойти, и "что произошло" происходит из целевого объекта.

При выполнении операции перетаскивания перетаскиваемый элемент можно перетаскивать в целевые области и из него любое количество раз до завершения операции.

Любой целевой объект удаления, который должен обновить его IDropTargetProvider::D ropTargetEffect свойство на лету, должно вызвать дополнительное событие изменения свойства для этого свойства.

Стиль только для источника

Стиль перетаскивания только для источника позволяет поставщику избежать реализации целевых объектов удаления. Не реализация целевых объектов удаления помогает снизить затраты на реализацию, но не дает клиентским приложениям специальных возможностей какие-либо сведения об объекте, полученном падением. Ниже приведен жизненный цикл для операции перетаскивания, которая использует стиль только для источника:

Когда пользователь запускает операцию перетаскивания:

Когда операция перетаскивания вводит целевой регион:

  • Источник задает для свойства IDragProvider::D ropEffect соответствующее значение.

Когда операция перетаскивания покидает целевой регион:

  • Источник задает для свойства IDragProvider::D ropEffect соответствующее значение.

Когда пользователь освобождает перетаскиваемый элемент по не целевому объекту:

Когда пользователь освобождает перетаскиваемый элемент по целевому объекту:

  • Источник вызывает событие DragComplete (UIA_Drag_DragCompleteEventId) .
  • Источник задает свойство IDragProvider::D ropEffect, чтобы указать эффект, который произошел при удалении элемента.

Перетаскивание нескольких элементов

Если поставщик реализует операции перетаскивания, в которых пользователь может перетаскивать несколько объектов одновременно, поставщик использует стили только источника или источника, как описано в предыдущем разделе, но с небольшим различием. Когда пользователь начинает операцию перетаскивания, поставщик создает главный исходный элемент, представляющий полный набор перетаскиваемых элементов. Главный исходный элемент вызывает все события от имени набора перетаскиваемых элементов; элементы не вызывают каких-либо событий.

Когда пользователь запускает операцию перетаскивания:

  • Поставщик создает главный исходный элемент.
  • Главный исходный элемент вызывает событие DragStart (UIA_Drag_DragStartEventId) .
  • Основной исходный элемент задает для свойства IDragProvider::IsGrabbed значение TRUE.
  • Главный исходный элемент обновляет список схваченных элементов, чтобы включить перетаскивание всех элементов, чтобы метод GetGrabbedItems может получить список.

На этом этапе главный исходный элемент выполняет ту же роль, что и исходный элемент, как описано в предыдущем разделе.

Клиентские интерфейсы для перетаскивания

Клиентские приложения службы автоматизации пользовательского интерфейса используют интерфейсы IUIAutomationDragPattern и интерфейсы IUIAutomationDropTargetPattern для доступа к данным перетаскивания из элементов пользовательского интерфейса.