Wpf dragdrop,如何在拖动过程中直观地拒绝掉落?

awx*_*awx 5 wpf drag-and-drop cursor

在Wpf中拖动期间,如何更改鼠标光标(或者可能使用装饰器)以指示droptarget不接受拖动的项目?

我试图e.Effects = DragDropEffects.NoneDragEnter活动期间设置,但这不起作用,我怀疑我误解了应该使用的功能.我已经尝试过使用这个GiveFeedback事件但是没有看到droptarget它如何影响它.

是否有任何教程可以解决droptargetWpf中的拒绝问题?

Ian*_*anR 6

只需在放置目标的DragEnter中设置DragDropEffects即可.你的DragEnter甚至被调用了吗?您是否在放置目标控件上设置了AllowDrop?

这是WPF拖放过程中的一系列事件(取自MSDN),这可能有助于解决发生的事情......

  1. 通过调用源控件的DoDragDrop方法启动拖动.

    DoDragDrop方法有两个参数:*data,指定要传递*allowedEffects的数据,指定允许哪些操作(复制和/或移动)

    将自动创建一个新的DataObject对象.

  2. 这反过来会引发GiveFeedback事件.在大多数情况下,您不必担心GiveFeedback事件,但如果您想在拖动过程中显示自定义鼠标指针,则可以在此处添加代码.
  3. AllowDrop属性设置为True的任何控件都是潜在的放置目标.AllowDrop属性可以在设计时在"属性"窗口中设置,也可以在Form_Load事件中以编程方式设置.
  4. 当鼠标经过每个控件时,将引发该控件的DragEnter事件.GetDataPresent方法用于确保数据的格式适合目标控件,Effect属性用于显示相应的鼠标指针.
  5. 如果用户在有效的放置目标上释放鼠标按钮,则会引发DragDrop事件.DragDrop事件处理程序中的代码从DataObject对象中提取数据并将其显示在目标控件中.

  • 谢谢你确认我正朝着正确的方向前进.我没有意识到我需要实现DragOver以及DragEnter.谢谢 (3认同)