为什么有些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这样写吧。

 

posted @ 2010-04-14 23:52  RobinLao  阅读(508)  评论(0编辑  收藏  举报