0

我在 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 以将插入符号显示在视图中?

4

1 回答 1

1

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

于 2015-08-25T15:29:52.367 回答