删除WPF富文本框中的隐藏字符

(由于这个问题没有得到任何答案,我已经重申了它)

在我的应用程序中,我有一个包含Rich Text Box的对话框,该框中充满了从Twitter收集的Tweet。 使用推文实体,我对推文进行格式化,以便在推文,提及和主题标签中包含内联超链接。 但是,超链接永远无法正确定位; 总是2或3个字符太快太远。

这是我用来在Rich Text Box中设置文本的代码:

TweetText.Document.ContentEnd.InsertTextInRun(Status.Text)
Dim FlowDocument As FlowDocument = TweetText.Document
If LinkEntity.Count > 0 Then
            For Each Entity As Entities.TwitterUrlEntity In LinkEntity
                Dim Start As TextPointer = FlowDocument.ContentStart
                Dim StartPosition As TextPointer
                Dim EndPosition As TextPointer
                If Entity.StartIndex = 0 Then
                    StartPosition = Start.GetPositionAtOffset(Entity.StartIndex)
                Else
                    StartPosition = Start.GetPositionAtOffset(Entity.StartIndex)
                End If
                EndPosition = Start.GetPositionAtOffset(Entity.StartIndex + Entity.DisplayUrl.Length, LogicalDirection.Backward)
                Dim h As New Hyperlink(StartPosition, EndPosition)
                AddHandler h.MouseLeftButtonDown, AddressOf Hyperclick_Link
                h.NavigateUri = New Uri(Entity.Url)
                h.Cursor = Cursors.Hand
            Next
        End If
'I have the other entities here, they have very similar code'
TweetText.Document = FlowDocument

这是我的Rich Text Box XAML:

<RichTextBox Name="TweetText" Margin="5" FontSize="14" BorderThickness="0" IsReadOnly="True" />

这是输出:

问题!

tweet实体对每个实体都有适当的索引,但我认为Rich Text Box具有导致此偏移量的隐藏字符。


有趣的是,没有人回答这个问题,但我有点RichTextBoxes ,因为RichTextBoxes非常讨厌使用。 我目前也遇到了麻烦。

所以,你说得对, RichTextBox确实使用了隐藏字符,但你不应该试图去除它们,因为它们可以帮助它按照它的方式工作。 索引时只需要计算字符符号,而不是其他不可见的标签和符号。

我对VB不太好,但是你应该能够使用for循环,并且只有当YourTextPointer.GetPointerContext(LogicalDirection.Forward)TextPointerContext.Text才能增加索引,否则,你只需跳过它。

这样你的索引将与文本中的索引匹配。

链接地址: http://www.djcxy.com/p/50519.html

上一篇: Remove hidden characters in WPF rich text box

下一篇: rich formatted text display options in WPF