2013-08-20 19 views
0

WPF或WinForms中事件GiveFeedBackQueryContinueDrag之間的區別是什麼?WPF/WinForms中GiveFeedBack和QueryContinueDrag之間的區別

這本書我讀狀態:

  • GiveFeedback在:提供一個opprotunity爲用戶設置自定義鼠標指針
  • QueryContinueDrag:允許拖動源確定拖動事件是否應取消。

MSDN補充說,這兩個事件被觸發「不斷,而拖動源被拖動」

那麼,爲什麼這種分離 - 存在嗎?當然,我也可以在QueryContinueDrag事件中設置一個自定義鼠標指針?

回答

2

基本上,您可以將e.Effects屬性(從DragEventArgs類)設置爲DragDropEffects.None以從任何公開它的處理程序中取消拖放操作,例如。 PreviewDropPreviewDragOver。因此,在我看來,你是正確的....你不需要需要在QueryContinueDrag處理程序中做到這一點。

事實上,我有一個完整的工作拖放系統與圖形裝飾都通過Attached Properties實現,我沒有打算實施QueryContinueDrag處理程序。

但是,如果你想將光標更改爲自定義光標,那麼你需要實現GiveFeedBack處理程序,因爲GiveFeedbackEventArgs可以讓你做到這一點:

private void PreviewGiveFeedback(object sender, GiveFeedbackEventArgs e) 
{ 
    Mouse.SetCursor(Cursors.No); 
    e.Handled = true; // Important! - Hides the normal drag and drop cursors 
} 
+0

啊,所以你需要它_prevent_ WPF將光標設置回先前的拖放狀態。我將你的答覆標記爲答案。雖然它沒有解釋爲什麼需要執行'QueryContinueDrag',但它顯示我實際上不必使用它 – buddybubble

+0

10我可以問一些關於如何在WinForms中實現拖放裝飾器的細節?我一直在尋找一個正確方向的「指針」,但到目前爲止已經出現乾涸。 – InteXX

+0

對不起,我無法幫助你...... WinForms中沒有'Adorner'類或圖層。 – Sheridan