【问题标题】:RichTextBox Selection.Text incorrectRichTextBox Selection.Text 不正确
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 2015-02-25
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多