Excel.Application.SelectionChange只触发一次
我只收到第一个事件通知,之后什么也没有发生。 有任何想法吗?
UPD:我发现了一件奇怪的事情。 我的事件处理程序代码如下所示:
var cell = range.Cells[1, 1]; var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing];
我已经这样改变它,添加显式types转换:
var cell = (Range)range.Cells[1, 1]; var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing];
而现在我的事件处理程序被调用了几次,然后才停止调用。
由于COM Interop跟踪事件处理程序的方式,垃圾收集器可以清理RCW,从而阻止您接收事件。
请确保您保留对具有事件处理程序的对象的引用,例如,而不是写入:
Application.CurrentWorkbook.SelectionChanged += ....
写
class ThisAddin { WorkBook _workbook; void AddinLoaded() { _workbook.SelectionChanged += .... } }