我正在为微软Word创建一个插件(使用C#),当一些文本/图像等从任何来源拖放到Word中时,我想触发一些功能。所以基本上我想捕获Word中的Drop事件。然而,我无法找到任何Word API,这在这方面有帮助。你能帮个忙吗?
发布于 2011-06-22 01:35:50
这样的野兽根本不存在。最好的(简单的)方法是观察DocumentChange事件,并尝试监视发生了什么变化(它将位于“选择”的当前位置)。
一种更难的方法是将主Word窗口子类化,观察正在交换的任何拖放消息,并在适当的时候拦截它们。
发布于 2015-09-21 21:33:33
SelectionChange事件有时可用于此目的。有时,因为所选内容并不总是包含被删除的内容。例如,如果您将图像拖放到文档中,该图像将不会被选中。
发布于 2017-04-07 17:33:14
更好的替代方法是使用覆盖在Word窗口顶部的透明窗口。此窗口在拖动过程开始时启动,并放置在文档窗口的顶部。然后,此窗口而不是Word接收到drop操作,因此您可以确切地了解传入的内容以及它被拖放到的位置。然后,您可以将这些位置坐标转换为相应的文档位置(使用Window类的RangeFromPoint()方法),并对拖放的数据执行所需的任何操作。在此之后,您只需隐藏您的透明窗口,一切都会恢复正常。
此方法的完整实现以及源代码可在this excellent MSDN article中获得。
https://stackoverflow.com/questions/6427329
复制相似问题