首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSPackage未激活文档

VSPackage未激活文档
EN

Stack Overflow用户
提问于 2013-10-16 07:42:10
回答 1查看 253关注 0票数 0

我正在构建的扩展中使用这段代码(从这里中可以看到):

代码语言:javascript
复制
            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的说法

呈现此窗口,将窗口带到顶部,并激活该窗口。

我还需要做些什么,才能让打开的文档更加活跃?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-16 13:06:58

找出了这个问题,与给定的代码无关,与我无关--我不是handling RoutedEvent,它触发了这段代码的最终结果,因此事件冒泡到父TreeViewItem,并试图将其崩溃,最终导致ToolWindow再次受到关注。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19397744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档