2

如果我拖动(从后到前)选择 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'语句中。如果没有选择,我可以将文本指针用于光标所在的位置。但是,如果有选择,我需要它的开头。具有讽刺意味的是,如果它在另一个方向上失败了,那就不是问题了。

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

4

1 回答 1

1

所以,它没有坏掉。更改 CaretPosition 会清除选择。这就是正在发生的事情。现在像冠军一样工作。

于 2012-10-23T20:27:20.187 回答