【问题标题】:How can I tell if a drag and drop operation failed?如何判断拖放操作是否失败?
【发布时间】:2009-02-02 20:45:20
【问题描述】:

在我看来,没有办法检测拖动操作是否成功,但必须有某种方法。假设我想执行从源到目的地的“移动”。如果用户在某个不能接受放置的应用或控件上释放鼠标,我该如何判断?

就此而言,我怎么知道拖动完成的时间?

我看到了this question,但他的解决方案对我不起作用,而e.Action 总是 Continue

【问题讨论】:

    标签: c# wpf drag-and-drop


    【解决方案1】:

    我不确定这是否可以帮助您,但 DoDragDrop 方法返回最终的 DragDropEffects 值。

    var ret = DoDragDrop( ... );
    if(ret == DragDropEffects.None) //not successfull
    else // etc.
    

    【讨论】:

      【解决方案2】:

      啊,我想我明白了。原来对 DoDragDrop 的调用实际上是同步(多么蹩脚),并返回一个值DragDropEffects,如果操作失败,则设置为None。所以基本上这意味着只要用户处于拖动过程中,应用程序(或至少 UI 线程)就会被冻结。这对我来说似乎不是一个非常优雅的解决方案。

      好的 cz_dl 我看到你刚刚发布了那个东西,所以我会给你答案。

      不过我不明白:目的地如何确定操作应该是移动还是副本?这不应该取决于源应用吗?

      【讨论】:

        【解决方案3】:

        还不能添加评论,所以另一个答案。 当我第一次看到 DoDragDrop 被同步调用并且不知何故并没有冻结 UI 时,我也很惊讶。

        但是我认为复制/移动的东西是完全合乎逻辑的。您可以在源应用程序中调用 DoDragDrop 方法时指定允许的效果,这对您来说很重要。目标应用程序将如何处理和使用它所决定的数据。

        【讨论】:

          猜你喜欢
          • 2019-02-15
          • 2023-01-01
          • 2013-06-18
          • 1970-01-01
          • 2014-07-21
          • 1970-01-01
          • 2018-02-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多