在Wpf中拖动时,如何更改鼠标光标(或者可能使用装饰器)以指示droptarget
不接受拖动的项目?
我试图在e.Effects = DragDropEffects.None
事件期间设置DragEnter
,但这不起作用,我怀疑我误解了应该使用的功能。我已尝试使用GiveFeedback
事件但未看到droptarget
如何影响它。
是否有任何教程可以涵盖Wpf中droptarget
的拒绝?
答案 0 :(得分:6)
只需在放置目标的DragEnter中设置DragDropEffects即可。你的DragEnter甚至被调用了吗?您是否在放置目标控件上设置了AllowDrop?
这是拖拽期间的事件序列。下载WPF(取自MSDN),这可能有助于解决正在发生的事情......
通过调用源控件的DoDragDrop方法启动拖动。
DoDragDrop方法有两个参数: *数据,指定要传递的数据 * allowedEffects,指定允许哪些操作(复制和/或移动)
自动创建一个新的DataObject对象。
答案 1 :(得分:0)
我遇到了类似的问题,因为我更改了GiveFeedback处理程序中的光标。 即使丢弃目标拒绝数据,也使用此游标。 切换回默认光标(e.UseDefaultCursors = true)后,光标形状确实变为“不允许”。
答案 2 :(得分:0)
如果你使用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
,那么很难说。代码是必需的。