对于某些事件,通过直接挂钩事件对象的订阅失败但在使用局部变量时有效。 我还没弄明白为什么,谁呢?
当我开始使用CommandBarsEvents.OnUpdate
时,我遇到了这个谜团,为了detect interaction with a shape,可能会遇到如here所述的某些问题。
这个问题还有其他事件吗?
答案 0 :(得分:0)
要明确这里有一个(不完整的)受影响事件的概述,而不是
事件 DO 需要一个局部变量
this.Application.CommandBars.OnUpdate
他们的代码必须是这样的:
using Office = Microsoft.Office.Core;
namespace Project
{
public partial class AddIn
{
private Office.CommandBars commandBars; //declaration of local variable
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
commandBars = this.Application.CommandBars; //initialization of local variable
commandBars.OnUpdate += new Office._CommandBarsEvents_OnUpdateEventHandler(commandBars_OnUpdate); //"indirect" subscription to event`
}
}
}
事件 NOT 需要一个局部变量
((InteropExcel.AppEvents_Event)Application).NewWorkbook
this.Application.WorkbookNewSheet
this.Application.WorkbookOpen
他们的代码可以是这样的:
using Office = Microsoft.Office.Core;
namespace Project
{
public partial class AddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
((InteropExcel.AppEvents_Event)Application).NewWorkbook += new InteropExcel.AppEvents_NewWorkbookEventHandler(Excel_NewWorkbook_EventHandler); //"direct" subscription to event`
}
}
}