拖曳控制項模式
提供使用IDragProvider實作拖曳控制項模式的指導方針和慣例,包括屬性和方法的相關資訊。 拖曳控制項模式可用來支援可拖曳的控制項,或具有可拖曳專案的控制項。
實作方針和慣例
實作 拖曳 控制項模式時,請使用下列指導方針和慣例:
-
IDragProvider介面支援兩種不同的拖曳樣式:來源/目標樣式和僅限來源樣式。 您需要選擇最適合拖放案例的樣式:
- 來源/目標樣式: 每個可能的置放目標都是以實作 IDropTargetProvider 介面的專案表示。 在拖曳作業期間,Microsoft 消費者介面自動化事件源自正在拖曳的專案,以及從置放目標元素。
- 僅限來源樣式:置放目標不會以消費者介面自動化元素表示。 在拖曳作業期間,事件只源自正在拖曳的專案。
- IDragProvider 是一個唯讀介面,用於監視拖曳作業。 您無法使用它來控制拖曳作業。 您可以將滑鼠輸入傳送至控制項,以自動化拖曳作業。
- 需要 IDragProvider::IsGrabbed 屬性。
- 僅限來源樣式實作需要 IDragProvider::D ropEffect 和 IDragProvider::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 | 事件 | 無 |
相關主題