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

Ret*_*zan 6 c# excel vsto drag-and-drop customtaskpane

阿尔,我被卡住了!

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

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

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

Ret*_*zan 5

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

  • 你好。您打开的表单对用户可见吗?我也遇到了同样的问题,所以我很想看看你提出的代码。 (3认同)