我在 RichEditBox 上实现了一个查找功能,执行时将在 RichEditBox 中搜索query
并选择找到的文本:
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 以将插入符号显示在视图中?