滚动到RichTextBox中的位置

时间:2014-01-09 22:03:14

标签: c# wpf scroll scrollbar richtextbox

我需要帮助滚动到富文本框中突出显示的文本/字符串位置。我能够找到文本并突出显示它,但我希望用户能够单击“下一步”按钮,该事件将滚动到第一次出现的突出显示的单词到下一个按钮的垂直偏移位置,依此类推。任何有助于找到突出显示文本行的垂直偏移位置的帮助也会有所帮助。提前谢谢。

2 个答案:

答案 0 :(得分:3)

我找到了类似问题的答案here。以下是我认为可以为您解决问题的代码。

TextPointer start = txtEditor.Selection.Start;
FrameworkContentElement fce = (start.Parent as FrameworkContentElement);
if (fce != null)
{
    fce.BringIntoView();
}

答案 1 :(得分:0)

我有两个TextPointer用于创建TextRange,然后在其上使用.ApplyPropertyValue来设置背景颜色。然后我试了......

var fce = fromTextPointer as FrameworkContentElement;
if (fce != null)
    fce.BringIntoView();   // unreliable

......但它不可靠。我最终发现的工作 - 表面上可靠 - 正在使用我从同一.Start创建的TextRange的{​​{1}}:

fromTextPointer

我猜想某些操作 - 可能是var fce = textRange.Start.Parent as FrameworkContentElement; if (fce != null) fce.BringIntoView(); // ostensibly reliable 的创建,但更可能是TextRange的调用 - 在小部件和/或textRange对象中触发了足够的位置规范化.ApplyPropertyValue那么可靠。

也许.BringIntoView()没有必要这样做 - 就像Selection的回答一样 - 但我没有操纵Ward而这个问题没有提及{{1}特别是,所以在这里张贴它有助于其他一些可怜的灵魂避免小时的WPF“有趣”。

相关问题