C#Excel:设置捕获单元格select的代理行为间歇性

我创build了一个接口来定义RangeSelectionTarget,如下所示:

public interface IRangeSelectionTarget { void OnRangeSelection(Excel.Range target); } 

在另一个类(ExcelController,封装Excel互操作行为)中,我有一个方法将工作表范围select(使用鼠标select单元格)传递给目标:

  public void SelectCaptureOn(IRangeSelectionTarget target) { _selectionCallback += new SelectionCallback(target.OnRangeSelection); _selectionCallback += new SelectionCallback(SelectionCallback2); int limit = _workbook.Worksheets.Count; for (int i = 1; i <= limit; i++) { Excel.Worksheet worksheet = _workbook.Worksheets.get_Item(i); string worksheetName = worksheet.Name; worksheet.SelectionChange += new Excel.DocEvents_SelectionChangeEventHandler(OnXlSelectionCallback); } } 

目标,一个窗体,实现OnRangeSelection()如下,以显示单元格地址:

  public void OnRangeSelection(Excel.Range target) { if (this.InvokeRequired) { RangeSelectionDelegate rsDel = new RangeSelectionDelegate(OnRangeSelection); this.Invoke(rsDel, new object[] { target }); } else { txtRange.Text = target.AddressLocal; txtRange.Tag = target; } } 

这很好,除非没有。 在调用SelectCaptureOn()之后,OnRangeSelection()开始在IRangeSelectionTarget上调用,然后显示所选单元格的地址。 OnRangeSelection()检查InvokeRequired为了避免线程问题….所以我希望。

问题是,经过几次成功的select显示,行为完全停止。

任何想法为什么,或从哪里开始调查?

谢谢!