在我看来,无法检测拖动操作是否成功,但必须有某种方法。假设我想从源到目的地执行“移动”。如果用户将鼠标放在某些不能接受掉落的应用程序或控件上,我该怎么说?
就此而言,如何判断拖动何时完成?
我看到了this question,但他的解决方案对我不起作用,e.Action
总是 Continue
。
答案 0 :(得分:7)
我不确定这是否可以帮到你,但DoDragDrop方法返回最终的DragDropEffects值。
var ret = DoDragDrop( ... );
if(ret == DragDropEffects.None) //not successfull
else // etc.
答案 1 :(得分:3)
DragDropEffects
,如果操作失败则设置为None
。所以基本上这意味着只要用户处于拖动的中间,app(或至少是UI线程)就会被冻结。对我来说,这似乎不是一个非常优雅的解决方案。
好的cz_dl我看到你刚发布了这件事,所以我会给你答案。
这个我不明白:目的地如何确定op应该是移动还是副本?这不应该取决于源应用程序吗?
答案 2 :(得分:0)
无法添加评论,所以另一个答案。 当我第一次看到DoDragDrop被同步调用时,我也感到很惊讶,它不知何故不会冻结UI。
但我相信复制/移动的东西是完全合乎逻辑的。您可以在源应用程序中调用DoDragDrop方法时指定允许的效果,这对您来说非常重要。目标应用程序将如何处理和使用它所依据的数据。