VSPackage未激活文档

灵创

正在构建的扩展程序中使用以下代码(从此处看到):

            IVsUIShellOpenDocument openDoc = Package.GetGlobalService(typeof(IVsUIShellOpenDocument)) as IVsUIShellOpenDocument;
            if (openDoc == null) {
                return;
            }

            IVsWindowFrame frame;
            Microsoft.VisualStudio.OLE.Interop.IServiceProvider sp;
            IVsUIHierarchy hier;
            uint itemid;
            Guid logicalView = VSConstants.LOGVIEWID_Code;
            if (ErrorHandler.Failed(openDoc.OpenDocumentViaProject(path, ref logicalView, out sp, out hier, out itemid, out frame)) || frame == null) {
                return;
            }

            object docData;
            frame.GetProperty((int)__VSFPROPID.VSFPROPID_DocData, out docData);

            // Get the VsTextBuffer  
            VsTextBuffer buffer = docData as VsTextBuffer;
            if (buffer == null) {
                IVsTextBufferProvider bufferProvider = docData as IVsTextBufferProvider;
                if (bufferProvider != null) {
                    IVsTextLines lines;
                    ErrorHandler.ThrowOnFailure(bufferProvider.GetTextBuffer(out lines));
                    buffer = lines as VsTextBuffer;
                    Debug.Assert(buffer != null, "IVsTextLines does not implement IVsTextBuffer");

                    if (buffer == null) {
                        return;
                    }
                }
            }

            // Finally, perform the navigation.  
            IVsTextManager mgr = Package.GetGlobalService(typeof(VsTextManagerClass)) as IVsTextManager;
            if (mgr == null) {
                return;
            }
            mgr.NavigateToLineAndColumn(buffer, ref logicalView, line, column, line, column);

哪一个(根据帖子)应该打开我的文档(如果尚未打开)并聚焦文档,将光标置于给定位置。一切正常,但似乎无效,是文档的焦点,我的ToolWindow仍然处于活动焦点(即,黄色突出显示的标题栏),我尝试将这行放在后面NavigateToLineAndColumn,以查看它是否可以完成工作我期望,但是仍然没有骰子:

frame.Show()

根据MSDN

使该窗口可见,将其移至顶部,然后激活该窗口。

我需要做些什么,以使工作重点集中在打开的文档上?

灵创

想通了这个问题,是无关的给定的代码,这是我不能做handlingRoutedEvent这引发关闭此代码的可能性,并因此事件冒泡到父TreeViewItem,并试图将其折叠,从而结束了随着ToolWindow越来越焦点一次。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章