VSIX:通过附加到当前的TextView SelectionChanged事件来解决错误

时间:2018-08-23 14:33:57

标签: c# visual-studio events vsix envdte

我正在编写VSIX,以从当前“编辑器焦点”的类成员获取信息。 为此,我附加了 IWpfTextView.Selection.SelectionChanged事件,如下所示:

    IWpfTextView lastTextView;
EventHandler SelectionEventHandler;
private void AttachToActiveWindow()
{
    if (dte.ActiveDocument != null && dte.ActiveDocument.Kind == DOCUMENT_KIND_GUID)
    {
        if (lastTextView != null)
        {
            lastTextView.Selection.SelectionChanged -= SelectionEventHandler;
        }

        lastTextView = TextViewHelper.GetActiveTextView();
        lastTextView.Selection.SelectionChanged += SelectionEventHandler;
    }
}

为了避免内存泄漏,如果活动文档发生更改,我必须取消该事件。

到目前为止,一切正常。但是,当我切换到第一个附加的文档,并再次将我附加到 SelectionChanged 事件时,它将无法正常工作。当我切换到我已经附加到的文档时,不会抛出 SelectionChanged 事件。

有人知道这是什么问题吗?

0 个答案:

没有答案