gpt4 book ai didi

.net - Visual Studio 扩展性 : Move to line in a TextDocument

转载 作者:行者123 更新时间:2023-12-02 03:33:32 27 4
gpt4 key购买 nike

我处于工具窗口的焦点中。通过在 TreeView 节点上双击,光标必须移动到打开的源代码文档中的特定行。我通过调用 Edit.GoTo Line 命令解决了这个问题,如下所示:

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

但是我对此不太满意,因为我失去了工具窗口的焦点。是否有其他方法可以使用自动化 API 移动到一行?

最佳答案

使用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 是装饰器 (IWpfTextViewCreationListener) 提供的 IWpfTextView

关于.net - Visual Studio 扩展性 : Move to line in a TextDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6186925/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com