删除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