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

阿尔,我卡住了!

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

问题是,Excel似乎完全覆盖了自定义任务窗格及其包含的控件的拖放属性,以便在将任务文件拖放到任务窗格上时,Excel只会尝试将其作为电子表格打开(并成功这是一个支持的文件types),我的DragDrop事件从不会触发。

有什么办法让Excel停止这样做,所以拖放事件被发送到任务窗格?

好吧,我find了一个方法。 事实certificate,DragDrop事件不会触发,因为Excel本身处理所有的拖动事件,但是DragEnter事件触发,当它发生时,我可以在实际的拖放目标之上打开一个无模式的表单。 这个表单可以接收DragDrop事件(并在DragLeave事件中自行终止)。 这是一个黑客,但它似乎很好地工作。