use*_*528 1 excel vsto add-in ms-office
我只收到第一个事件通知,之后没有任何反应.有任何想法吗?
UPD:我发现了一件奇怪的事.我的事件处理程序代码如下所示:
var cell = range.Cells[1, 1];
var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing];
Run Code Online (Sandbox Code Playgroud)
我用这种方式改了它,添加了显式类型转换:
var cell = (Range)range.Cells[1, 1];
var rangeName = cell.Address[false, false, XlReferenceStyle.xlA1, Type.Missing, Type.Missing];
Run Code Online (Sandbox Code Playgroud)
现在我的事件处理程序被多次调用,然后才停止调用.
由于使用COM Interop跟踪事件处理程序的方式,垃圾收集器可以清理RCW,从而阻止您接收事件.
确保保留对具有事件处理程序的对象的引用,例如,而不是编写:
Application.CurrentWorkbook.SelectionChanged += ....
Run Code Online (Sandbox Code Playgroud)
写
class ThisAddin
{
WorkBook _workbook;
void AddinLoaded()
{
_workbook.SelectionChanged += ....
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1840 次 |
| 最近记录: |