【问题标题】:Prohibit drag&drop from my application into my application禁止从我的应用程序拖放到我的应用程序
【发布时间】:2013-09-18 06:57:07
【问题描述】:

我刚刚在我的应用程序中实现了拖放。它有两种方式:

  1. 从我的应用到 Windows 资源管理器:导出文件
  2. 从 Windows 资源管理器到我的应用:导入文件

一个副作用是我还可以将文件从我的应用程序拖到我的应用程序(同一个窗口),这不是有意的。

有没有一种优雅的方法来确保我开始的拖放操作不会被我的应用程序接受?例如。检查放置操作的来源!= 我的应用程序?

【问题讨论】:

  • 你是如何进行拖放的?
  • 我只知道一种方法:'DoDragDrop(myData, DragDropEffects.Copy);'

标签: c# winforms drag-and-drop


【解决方案1】:

您需要注册您从应用程序内部使用某种设施或服务启动拖动的事实。如果您在应用程序中收到拖放,请询问设施/服务是否在您的应用程序中启动了拖动。如果是这样,丢弃。之后重置设施/服务(无论如何)。

【讨论】:

  • 问题是我需要在两个方向上拖动'DataFormats.FileDrop'(文件名)...
【解决方案2】:

我只是想出了一个方法来做到这一点。 现在我在我的拖放数据对象上设置了两种类型的数据:

  1. 我要导出的文件名
  2. 包含我的应用程序名称的 Unicode 文本对象

在我的 Drop-handler 中,我检查是否存在 Unicode-Text 对象以及它是否包含我的应用程序名称。如果是这样,我会中止放置操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多