我是ToolWindow的焦点。通过在TreeView节点上执行dobleclick,游标必须移动到打开的源代码文档中的特定行。我通过调用Edit.GoTo Line命令解决了这个问题:
var commandName = "Edit.GoTo " + lineNumber;
_dte.ExecuteCommand(commandName);
然而,当我失去工具窗口的焦点时,我并不十分方便。是否有其他方法可以使用Automation API移动到某一行?
答案 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}}