拖曳控制項模式

提供使用IDragProvider實作拖曳控制項模式的指導方針和慣例,包括屬性和方法的相關資訊。 拖曳控制項模式可用來支援可拖曳的控制項,或具有可拖曳專案的控制項。

實作方針和慣例

實作 拖曳 控制項模式時,請使用下列指導方針和慣例:

  • IDragProvider介面支援兩種不同的拖曳樣式:來源/目標樣式和僅限來源樣式。 您需要選擇最適合拖放案例的樣式:
    • 來源/目標樣式: 每個可能的置放目標都是以實作 IDropTargetProvider 介面的專案表示。 在拖曳作業期間,Microsoft 消費者介面自動化事件源自正在拖曳的專案,以及從置放目標元素。
    • 僅限來源樣式:置放目標不會以消費者介面自動化元素表示。 在拖曳作業期間,事件只源自正在拖曳的專案。
  • IDragProvider 是一個唯讀介面,用於監視拖曳作業。 您無法使用它來控制拖曳作業。 您可以將滑鼠輸入傳送至控制項,以自動化拖曳作業。
  • 需要 IDragProvider::IsGrabbed 屬性。
  • 僅限來源樣式實作需要 IDragProvider::D ropEffectIDragProvider::D ropEffects 屬性,並禁止用於來源/目標樣式實作。 在來源/目標樣式實作中,可以查詢置放目標元素的置放效果。
  • IDragProvider::GrabbedItems屬性代表拖曳多個專案。 當使用者開始拖曳作業時,您必須建立新的消費者介面自動化專案作為事件來源元素。 這個新元素會引發來源元素在來源/目標或僅限來源模式中引發的所有事件,而任何實際拖曳的專案都不會引發任何事件。 拖曳作業完成時,終結事件來源專案。
  • 元素必須在變更時引發 DropEffect ( (UIA_DragDropEffectPropertyId) DropEffects (UIA_DragDropEffectsPropertyId) 屬性的事件。 允許其他屬性的屬性變更事件,但可以從必要的 DragStart (UIA_Drag_DragStartEventId) DragCancel (UIA_Drag_DragCancelEventId) 和 DragComplete (UIA_Drag_DragCompleteEventId) 事件推斷。

IDragProvider的必要成員

實作 IDragProvider 介面時,需要下列屬性和方法。

必要成員 成員類型 備註
IsGrabbed 屬性
DropEffect 屬性 僅限來源樣式的實作所需。
DropEffects 屬性 如果擷取的專案有一個以上的可能下降效果,則為必要專案。
GetGrabbedItems 方法 多專案拖曳作業的必要專案。
UIA_Drag_DragStartEventId 事件
UIA_Drag_DragCancelEventId 事件
UIA_Drag_DragCompleteEventId 事件

 

控制項類型及其支援的控制項模式

DropTarget 控制項模式

UI 自動化控制項模式概觀

UI 自動化樹狀目錄概觀

消費者介面自動化拖放的支援