我正在为Microsoft Word创建一个加载项(使用C#),并希望在从任何源拖动某些文本/图像等并将其放入Word时触发某些功能。所以基本上我想在Word中捕获Drop事件。但是,我无法找到任何有助于此的Word API。你能帮忙吗?
答案 0 :(得分:3)
不存在这样的野兽。 您可以期待的最好(简单)方法是观察DocumentChange事件,并尝试监视更改的内容(它将位于“选择”的当前位置)。
一种非常强硬的方法是对主Word窗口进行子类化,并观察正在交换的拖放消息,并在适当时拦截它们。
答案 1 :(得分:0)
有时可以使用SelectionChange事件。有时,因为选择并不总是包含已删除的内容。例如。如果将图像拖放到文档中,则不会选择图像。
答案 2 :(得分:0)
更好的替代方法是使用覆盖在Word窗口顶部的透明窗口。当拖动过程开始并放置在文档窗口的顶部时,将启动此窗口。然后,此窗口而不是Word接收放置操作,因此您确切地知道放入的内容以及放置的位置。然后,您可以将这些位置坐标转换为相应的文档位置(使用RangeFromPoint()
类的Window
方法),并对删除的数据执行任何操作。在此之后,您只需隐藏透明窗口,一切都恢复正常。
this excellent MSDN article中提供了此方法的完整实现以及源代码。