Visual Studio可扩展性:移动到TextDocument中的行

时间:2011-05-31 11:33:55

标签: .net visual-studio

我是ToolWindow的焦点。通过在TreeView节点上执行dobleclick,游标必须移动到打开的源代码文档中的特定行。我通过调用Edit.GoTo Line命令解决了这个问题:

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

然而,当我失去工具窗口的焦点时,我并不十分方便。是否有其他方法可以使用Automation API移动到某一行?

1 个答案:

答案 0 :(得分:5)

使用IViewScroller.EnsureSpanVisible(SnapshotSpan span, EnsureSpanVisibleOptions options)

要创建范围,请使用:

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是[{1}}提供的IWpfTextView {/ 1}}