禁止从我的应用程序拖放到我的应用程序中

时间:2013-09-18 06:57:08

标签: c# winforms drag-and-drop

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

  1. 从我的应用程序到Windows资源管理器:导出文件
  2. 从Windows资源管理器到我的应用:导入文件
  3. 一个副作用是我也可以将文件从我的应用程序拖到我的应用程序(同一个窗口),不是意图。

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

  1. 我要导出的文件名
  2. 包含我的应用程序名称的Unicode-Text对象
  3. 在我的Drop-handler中,我检查是否存在Unicode-Text对象,以及它是否包含我的应用程序名称。如果是这样,我中止放下操作。