RichTextBox Selection.Text不正确

时间:2012-10-15 19:23:08

标签: wpf text position richtextbox selection

如果我拖动(返回前面)选择RichTextBox中的文本,Selection.Text将匹配实际选择。 但是,如果我拖动(从前到后)在同一个RichTextBox中选择文本,则Selection.Text 始终为空字符串。

我需要这些信息的原因是,在重新解析(这涉及清除所有文本并重新填充它)RichTextBox中的文本之后,我需要将插入符号返回到原始位置。

我的目标是获得选择开始的偏移量。我可以使用它来获取一个停在那里的字符串,我将在解析结束时用它来替换插入符号。

if (String.IsNullOrWhiteSpace(Selection.Text))
                restartPosition = activeRun.ContentStart.GetOffsetToPosition(CaretPosition.GetInsertionPosition(LogicalDirection.Forward));
            else
                restartPosition = activeRun.ContentStart.GetOffsetToPosition(Selection.Start);

关键在于'如果'声明。如果没有选择,我可以使用文本指针来指向光标所在的位置。如果有选择,我需要它的开头。具有讽刺意味的是,如果它在另一个方向失败,那就不会成为一个问题。

有没有办法准确检索选择?微软的实施似乎有点缺陷。

1 个答案:

答案 0 :(得分:1)

所以,它没有被打破。更改CaretPosition会清除选择。那就是发生的事情。现在就像一个冠军。