C# WPF中文本框中的ScrollToCaret在哪里?
我找不到那个函数。基本上我有一个多行文本框,当我执行搜索时,我突出显示结果。但是如果结果不在视图中,我必须手动向下滚动,直到找到突出显示的结果,这超出了“查找”功能的目的 我不想使用RichTextBox,因为我遇到了一些性能问题 您可以结合使用:C# WPF中文本框中的ScrollToCaret在哪里?,c#,wpf,textbox,C#,Wpf,Textbox,我找不到那个函数。基本上我有一个多行文本框,当我执行搜索时,我突出显示结果。但是如果结果不在视图中,我必须手动向下滚动,直到找到突出显示的结果,这超出了“查找”功能的目的 我不想使用RichTextBox,因为我遇到了一些性能问题 您可以结合使用: 滚动线对我来说不够准确。我的文本框已启用换行,因此行索引不可靠。相反,我用了这个: textBox.CaretIndex = selectionStart; textBox.ScrollToEnd(); textBox.Select(selectio
滚动线对我来说不够准确。我的文本框已启用换行,因此行索引不可靠。相反,我用了这个:
textBox.CaretIndex = selectionStart;
textBox.ScrollToEnd();
textBox.Select(selectionStart, selectionLength);
基本上,ScrollToEnd执行到插入符号的滚动。注意,您应该使用
textBox.ScrollToLine(textBox.GetLineIndexFromCharacterIndex(textBox.SelectionStart))
,而不是SelectionStart
。调用Select
时,如果范围超过文本长度,则WPF map将剪辑该范围,如果将太大的内容传递给GetLineIndexFromCharacterIndex
,则会引发异常。其工作方式类似于符咒。如果要查看所选内容,需要将TextboxTextbox.focus()对焦代码>如果文本水平离开屏幕,则不确定该选项是否有效。它将转到行而不是“列”。ScrollToEnd执行它所说的操作:它滚动到内容的末尾将编辑控件的视图滚动到内容的末尾。
甚至微软也这么说!
textBox.CaretIndex = selectionStart;
textBox.ScrollToEnd();
textBox.Select(selectionStart, selectionLength);