在Excel VSTO中拖放到自定义任务窗格

时间:2011-04-14 22:34:27

标签: c# excel drag-and-drop vsto customtaskpane

Arr,我被卡住了!

我正在编写一个Excel加载项,可以打开一个自定义任务窗格(它是一种数据分析工具类型的东西)。为了提高工作效率,我希望用户能够将对象(例如文件或电子邮件附件)拖到该任务窗格的一部分上进行处理,而不必通过一个或多个文件对话框。

问题是Excel似乎完全覆盖了自定义任务窗格及其包含的控件的拖放属性,因此当我将文件拖放到任务窗格时,Excel只会尝试将其作为电子表格打开(如果它是受支持的文件类型,则成功,并且我的DragDrop事件永远不会触发。

有没有办法让Excel停止这样做,以便将drop事件发送到任务窗格?

1 个答案:

答案 0 :(得分:4)

好的,我找到了办法。事实证明DragDrop事件不会触发,因为Excel会处理所有拖动事件本身,但DragEnter事件触发,当它发生时,我可以在实际放置目标上打开一个无模式窗体。然后,此表单可以接收DragDrop事件(并在DragLeave事件上自杀)。这有点像黑客,但它看起来效果很好。