在 Wpf 中拖动期间,如何更改鼠标光标(或者可能使用装饰器)以指示droptarget
不会接受拖动的项目?
我试图在活动e.Effects = DragDropEffects.None
期间进行设置,DragEnter
但这不起作用,我怀疑我误解了该功能的用途。我已经尝试使用该GiveFeedback
事件,但看不到它会如何droptarget
影响它。
在 Wpf 中拖动期间,如何更改鼠标光标(或者可能使用装饰器)以指示droptarget
不会接受拖动的项目?
我试图在活动e.Effects = DragDropEffects.None
期间进行设置,DragEnter
但这不起作用,我怀疑我误解了该功能的用途。我已经尝试使用该GiveFeedback
事件,但看不到它会如何droptarget
影响它。
只需在放置目标的 DragEnter 中设置 DragDropEffects 即可。您的 DragEnter 是否被调用。您是否在放置目标控件上设置了 AllowDrop?
这是 WPF 中拖放期间的事件序列(取自 MSDN),这可能有助于弄清楚发生了什么......
通过调用源代码管理的 DoDragDrop 方法来启动拖动。
DoDragDrop 方法有两个参数: * data,指定要传递的数据 * allowedEffects,指定允许哪些操作(复制和/或移动)
将自动创建一个新的 DataObject 对象。
我遇到了类似的问题,因为我更改了 GiveFeedback 处理程序中的光标。即使放置目标确实拒绝了数据,也使用了此光标。切换回默认光标(e.UseDefaultCursors = true)后,光标形状确实更改为“不允许”。
你没有说你是否使用DragOver
偶数。也许你设置e.Effect = DragDropEffects.All;
了这个,它会在你进入目标控件后重复触发,而不是DragEnter
只触发一次。
private void arbol_DragOver(object sender, DragEventArgs e)
{
if (some_reason)
e.Effect = DragDropEffects.None;
else
e.Effect = DragDropEffects.All;
}
如果你没有使用这个事件或者没有在里面修改e.Effect
,那就很难说。需要代码。