Excel Add in 开发中遇到的 BUG 求高人指导

学无止境Coding 2013-11-21 03:07:31
本人在Excel Addin 中开发了一个Ribbon插件,上面有一个Button,点击后弹出一个下拉菜单,点击下拉菜单以外区域时关闭这个下拉菜单(鼠标移出这个区域不会自动关闭这个下拉菜单),这个下拉菜单是我自己用windows form 开发的一个User Control界面。

这些都很正常,异常是这样发生的:
点击这个button,弹出下拉菜单,鼠标移开点击其他非Excel的Applications(这个过程中下拉菜单不会自动收回),然后再打开这个Excel, 下拉菜单消失了,这个很正常,但是Excel上的所有按钮菜单都不起作用(除了Excel的最小化,最大化,还原三个按钮起作用)。如果此时再将Excel最小化然后再激活,那么所有按钮会恢复正常。

我已经测试了,哪怕是一个空白的windows form 做为这个下拉菜单界面,也会有这个问题,自己总结了下目前的情况有以下俩条可行思路,求指导:

一、当然我用的是Modeless的Show方法显示的这个下拉菜单,出现了这个bug。
这个情况下考虑过切换回Excel时,触发Activate事件,但是可惜的是Excel的WindowActivate是对同一个Excel内的Workbook的支持。当然WindowDeactivate也是一样的情况。
考虑通过继承NativeWindow 来实现一些东西,但是这方面技术本人不懂,菜鸟一个求指导。

二、如果用Modal的ShowDialog方法显示这个下拉菜单,在展现出来的情况下切换其他apps再切换回来是不会有问题的,但是ShowDialog方法不支持在该下拉菜单区域以外点击并捕获点击鼠标事件的,所以这个下拉框不会因为点击区域之外而自动消失。由于客户方安全策略,不能使用hook技术,windows api还是可以考虑的。

求高手指教,只要能解决问题,分数不是问题。
...全文
114 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
学无止境Coding 2013-11-22
  • 打赏
  • 举报
回复
没人能帮忙看下嘛
学无止境Coding 2013-11-21
  • 打赏
  • 举报
回复
此贴另开了一贴,同样送出100分,只要神人解决了后俩边都留言,全部200分送上,谢谢 http://bbs.csdn.net/topics/390648934

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧