WPF中TextBox中的ScrollToCaret在哪里?

Kin*_*oon 5 c# wpf textbox

我找不到那个功能.基本上我有一个多行文本框,当我执行搜索时,我突出显示结果.但是如果结果不在视图中,我将不得不手动向下滚动,直到找到突出显示的结果,这超出了"查找"功能的目的.

我不想使用RichTextBox,因为我遇到了一些性能问题.

Dan*_*rth 8

您可以GetLineIndexFromCharacterIndex结合使用ScrollToLine:

var selectionStart = x;
var selectionLength = y;
textBox.Select(selectionStart, selectionLength);
textBox.ScrollToLine(textBox.GetLineIndexFromCharacterIndex(textBox.SelectionStart));
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您应该使用“textBox.ScrollToLine(textBox.GetLineIndexFromCharacterIndex(textBox.SelectionStart))”,而不是“selectionStart”。当您调用“Select”时,如果超出文本长度,WPF 地图就会剪裁范围,如果您将太大的内容传递给“GetLineIndexFromCharacterIndex”,它将引发异常。 (2认同)
  • 如果您的文本水平离开屏幕,则不确定是否有效。它将转到行,但不会转到“列”。 (2认同)