0
我在擴展使用的代碼(從here看到的)這一點,我的建築:(根據崗位)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
呈現該窗口可見,將窗口頂部,並激活窗口。
我需要做更多的工作,才能使這項活動集中於打開的文檔?