0

私が構築している拡張機能で、このコードのビットを使用しています(hereから見られるように):

            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);

(投稿によると) まだドキュメントを開いていない場合はドキュメントを開き、指定された位置にカーソルを置いてドキュメントにフォーカスする必要があります。NavigateToLineAndColumnそれはすべて機能しますが、機能していないように見えるのは、ドキュメントのフォーカスです.ToolWindowにはまだアクティブなフォーカスがあります(つまり、黄色で強調表示されたヘッドバー)。私は期待しますが、まだサイコロはありません:

frame.Show()

MSDNによると

このウィンドウを表示し、ウィンドウを一番上に移動して、ウィンドウをアクティブにします。

開いているドキュメントにアクティブなフォーカスを与えるには、さらに何をする必要がありますか?

4

1 に答える 1

0

問題を理解し、指定されたコードとは何の関係もありませんでした。このコードの不測の事態を引き起こしたのではなく、私と関係があったため、イベントは親にバブルアップし、それを折りたたもhandlingうとしました。再び焦点を当てます。RoutedEventTreeViewItemToolWindow

于 2013-10-16T13:06:58.663 に答える