日期:2014-05-17  浏览次数:21187 次

在TextRange(Document.ContentStart,Document.ContentEnd)t得到的Text为什么内容,在内容多的时候查找不正确
我照网上给RichTextBox添加查找功能
但是根据以下代码生成的Text进行查找定义的
new TextRange(this.richTextBox.Document.ContentStart, this.richTextBox.Document.ContentEnd).Text;
但我发现在文档内容多的时间会定位不到
所以问,上面那句代码,到底生成的为什么样的内容
谢谢
------解决方案--------------------
TextRange包含了文本的格式信息。.Text属性返回其代表的纯文本。
------解决方案--------------------
因为你的richtextbox没有用rtb本身的滚动功能,所以GetCharacterRect返回的是相对viewport顶部的位移,需要再加上viewport的滚动位置才能定位。
在FindReplaceDialog.xaml.cs中的RichTextBoxAdapter.Select方法中:
把rtb.ScrollToVerticalOffset改成:
var viewTop = rtb.Document.ContentStart.GetCharacterRect(LogicalDirection.Forward).Top;
rtb.ScrollToVerticalOffset(rtb.Selection.Start.GetCharacterRect(LogicalDirection.Forward).Top - viewTop);