0

我找到了这篇关于如何在将附件从 Microsoft Outlook 拖到 .net 控件时获取数据的CodeProject 文章。

但是,在将其他类型的数据拖入控件时,代码会抛出异常,因此我只想在从Outlook中拖动数据的特定情况下使用此方法。

不幸的是,我看不到确定 DragDrop 事件来源的明显方法,因此实际上无法判断何时从 Outlook 中拖动文件。

我错过了一些明显的东西吗?

4

1 回答 1

2

无法准确发现拖动数据的来源在很大程度上是 D+D 的设计特点。它有助于将拖动源与接收数据的进程完全隔离开来。在 Windows 中非常重要,它使得从 64 位进程拖入 32 位进程变得简单。它完全避免了让进程正确互操作的许多麻烦。只有数据很重要。

您需要在 DragEnter 事件处理程序中筛选拖动的数据,并确保它是您知道如何处理的数据。主要的协议是 e.Data.GetDataPresent(),它告诉你数据的格式是正确的。除非您对所看到的内容感到满意,否则不要设置 e.Effect。

然后 DragDrop 事件处理程序应该接受数据。出现异常并不完全出乎意料,特别是如果您在 DragEnter 中没有很好地筛选它。否则,这不会导致您的程序崩溃,异常被吞没并且没有任何反应。使用 Debug + Exceptions 调试您的代码,勾选 CLR 异常的 Throw 复选框。

于 2012-12-13T15:09:36.083 回答