为什么有些Office对象的事件无法使用

今天碰到了个问题,发现无法使用某些对象事件,+=后双TAB出不来。
四处找原因,GOOGLE、MSDN上翻了许久,终于找到了原因和解决方法。
原因:写了一个同名的方法,而VSTO处理规则应该是方法>事件,所以有了同名的方法后事件就无法使用了。
如已经写了下面的方法:

void ThisWorkbook_ActivateEvent() { MessageBox.Show("b"); }  

 

如果再写Globals.ThisWorkbook.ActivateEvent+=,双TAB后会报以下提示:
此类中已存在处理程序”ThisWorkbook_ActivateEvent”,提示后会默认使用这个方法,明显,我们并不希望这个事件去使用这个方法,而是希望重写一段处理过程代码。
解决:命名为Excel.XXXEvents_Event类型

 

((Excel.WorkbookEvents_Event)(Globals.ThisWorkbook.InnerObject)).Activate += new Microsoft.Office.Interop.Excel.WorkbookEvents_ActivateEventHandler(ThisWorkbook_Activate);  

 

问题至此完美解决。
不过这个问题一般大家都不会碰到,因为一般没人会ThisWorkbook_ActivateEvent这样写吧。

 

 

 

 

作者:laoyebin(Paladin.lao)
博客园出处: http://laoyebin.cnblogs.com/
个人网站英文出处: http://mrvsto.com/
个人网站中文出处: http://cn.mrvsto.com/

 

你可能感兴趣的:(为什么有些Office对象的事件无法使用)