WPF / WinForms中GiveFeedBack和QueryContinueDrag之间的区别

时间:2013-08-20 15:50:58

标签: .net wpf winforms events

WPF或WinForms中的事件GiveFeedBackQueryContinueDrag之间有什么区别?

我正在读的这本书说:

  • GiveFeedBack:为用户提供设置自定义鼠标指针的机会
  • QueryContinueDrag:启用拖动源以确定是否应取消拖动事件。

MSDN补充说,在拖动拖动源时,两个事件都会连续触发

那为什么这个分离存在?当然我也可以在QueryContinueDrag事件中设置自定义鼠标指针?

1 个答案:

答案 0 :(得分: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
}