【问题标题】:UWP/WinRT: How to scroll a RichEditBox to the cursor position?UWP/WinRT:如何将 RichEditBox 滚动到光标位置?
【发布时间】:2015-08-25 23:29:52
【问题描述】:

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

【问题讨论】:

标签: windows-runtime win-universal-app scrollviewer richeditbox


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多