【发布时间】:2012-10-05 20:04:54
【问题描述】:
如果我拖动(从后到前)选择 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'语句中。如果没有选择,我可以将文本指针用于光标所在的位置。但是,如果有选择,我需要它的开头。具有讽刺意味的是,如果它在另一个方向上失败了,那就不是问题了。
有没有办法准确地检索选择?微软的实现似乎有点缺陷。
【问题讨论】:
-
那么显而易见的问题是,我该如何解决这个故障?
-
什么语言和框架?例如:C#、Java、Objective-C? .Net、Android、iOS 等?
-
WPF .Net 4.0 中的 C#。另请注意,这是在 RichTextBox 的 OnPreviewKeyDown 事件期间。
标签: wpf text position richtextbox selection