如果我拖动(从后到前)选择 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);
关键就在那个'if'语句中。如果没有选择,我可以将文本指针用于光标所在的位置。但是,如果有选择,我需要它的开头。具有讽刺意味的是,如果它在另一个方向上失败了,那就不是问题了。
有没有办法准确地检索选择?微软的实现似乎有点缺陷。