我只收到第一个事件通知,之后什么也没有发生。
有任何想法吗?
UPD:我发现了一件奇怪的事情。我的事件处理程序代码如下所示:
var cell = range.Cells[1, 1];
var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing];
我以这种方式更改了它,添加了显式类型转换:
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 += ....
write
class ThisAddin
{
WorkBook _workbook;
void AddinLoaded()
{
_workbook.SelectionChanged += ....
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)