我有一个RichTextBox,显示一个很大的FlowDocument(大约10k行)。我试图将文本格式应用于整个文档。这需要一段时间才能完成。
有没有办法只将格式集中在Document的可见部分?
有关信息:我正在尝试搜索RichTextBox的内容并突出显示所有匹配的匹配项。搜索功能在this之后被保留。我使用以下代码来“突出显示”找到的每个匹配项。
protected void ColorTextRanges(Color color)
{
foreach ( var textRange in locatedInstances )
{
if ( textRange != null )
{
textRange.ApplyPropertyValue( TextElement.BackgroundProperty, new SolidColorBrush( color ) );
}
}
}
答案 0 :(得分:0)
不是在循环中创建画笔而是在外部创建并重用它。不会成为主要但应该帮助一点。并且您可以测试BackgroundProperty并且仅在它错误时设置它 - 这可能会使它变慢但是如果大多数文档已经是正确的颜色那么它应该有帮助。
protected void ColorTextRanges(Color color)
{
SolidColorBrush brush = new SolidColorBrush( color );
foreach ( var textRange in locatedInstances )
{
if ( textRange != null )
{
textRange.ApplyPropertyValue( TextElement.BackgroundProperty, brush);
}
}
}
答案 1 :(得分:0)
我发现最佳性能提升是在屏幕上没有显示输出时更新文档。不知道为什么会这样,但我可以猜到屏幕缓冲区中的某些内容没有被更新。