2011-05-31 34 views
5

我是ToolWindow的焦點。通過在TreeView節點上執行dobleclick,光標必須移動到打開的源代碼文檔中的特定行。我通過調用像這樣Edit.GoTo行命令解決了這個問題:Visual Studio Extensibility:移動到TextDocument中的行

var commandName = "Edit.GoTo " + lineNumber; 
_dte.ExecuteCommand(commandName); 

但是我不認爲很方便易,因爲我失去了工具窗口的焦點。是否有另一種方式通過使用自動化API移動到一條線?

+0

您可以在命令後將焦點切換回工具窗口 – Cilvic 2011-06-01 12:37:05

回答

4

使用IViewScroller.EnsureSpanVisible(SnapshotSpan span, EnsureSpanVisibleOptions options)http://msdn.microsoft.com/en-us/library/dd886036.aspx

要創建一個跨度,使用:

var lines = view.VisualSnapshot.Lines; 

var startLine = lines.FirstOrDefault(a => a.LineNumber == fromLine - 1); 
var endLine = lines.FirstOrDefault(a => a.LineNumber == toLine - 1); 

if (startLine == null || endLine == null) 
    return; 

var startPosition = startLine.Start; 
var endPosition = endLine.Start; 

var span = new SnapshotSpan(view.TextSnapshot, Span.FromBounds(startPosition, endPosition)); 

而且滾動到跨度:

layer.TextView.ViewScroller.EnsureSpanVisible(span, EnsureSpanVisibleOptions.AlwaysCenter); 

view是所提供的IWpfTextView您裝飾者(IWpfTextViewCreationListener

相關問題