如果我拖动(返回前面)选择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);
关键在于'如果'声明。如果没有选择,我可以使用文本指针来指向光标所在的位置。如果有选择,我需要它的开头。具有讽刺意味的是,如果它在另一个方向失败,那就不会成为一个问题。
有没有办法准确检索选择?微软的实施似乎有点缺陷。
答案 0 :(得分:1)
所以,它没有被打破。更改CaretPosition会清除选择。那就是发生的事情。现在就像一个冠军。