[英]Wpf dragdrop, how to visually reject the drop during the drag?
在Wpf中拖动期间,如何更改鼠标光标(或使用装饰器)以指示droptarget
将不接受拖动的项目?
在DragEnter
事件期间,我尝试设置e.Effects = DragDropEffects.None
,但是此操作不起作用,我怀疑我误解了该功能的用途。 我尝试使用GiveFeedback
事件,但没有看到droptarget
如何影响它。
是否有任何教程涵盖droptarget
中droptarget的拒绝?
只需在放置目标的DragEnter中设置DragDropEffects即可。 是您的DragEnter甚至被呼叫。 您是否在放置目标控件上设置了AllowDrop?
这是WPF拖放过程中的事件序列(取自MSDN),可能有助于弄清楚发生了什么...
通过调用源控件的DoDragDrop方法来启动拖动。
DoDragDrop方法采用两个参数:*数据,指定要传递的数据* 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
,那么很难说。 需要代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.