UWP/WinRT:如何滚动一个RichEditBox到光标位置



我已经在一个RichEditBox上实现了一个查找函数,当执行时将搜索query并选择在RichEditBox内找到的文本:

String^ docText;
currentRichEditBox->Document->GetText(Text::TextGetOptions::None, &docText);
start = currentRichEditBox->Document->Selection->EndPosition;
end = docText->Length();
int result = newRange->FindText(query, end-start, Text::FindOptions::None);
if (result != 0)
{
    currentRichEditBox->Document->Selection->SetRange(newRange->StartPosition, newRange->EndPosition);
}

可以工作,因为找到的文本被正确选择。但是,对于内容长到可以滚动的RichEditBox,这将在屏幕外,并且RichEditBox不会滚动以将其带入视图。然而,奇怪的是,如果重新运行这段代码,它将滚动到之前的结果。例如,取以下文本:

这是一个测试

(屏幕结束)

1帽子

2顶帽子

当我的代码搜索hat时,它将成功突出显示单词hat的第一个实例。然而,RichEditBox不会向下滚动到它,即使它在屏幕外。第二次运行代码时,它将突出显示第二个实例,并将屏幕向下滚动到单词hat的第一个实例。

我假设在RichEditBox的代码中有一个导致这种情况的错误。是否有任何程序化的方式,我可以手动滚动RichEditBox或其隐式ScrollViewer,以使插入符号进入视图?

要滚动突出显示的文本到位置,您需要使用ITextRange接口上可用的ScrollIntoView方法。

相关内容

  • 没有找到相关文章

最新更新