0

大きい(> 10,000行)FlowDocumentを表示するRichTextBoxがあります。ドキュメント全体にテキスト書式を適用しようとしています。これは完了するまでに時間がかかります。

ドキュメントの表示部分のみにフォーマットを集中させる方法はありますか?

詳細情報:RichTextBoxのコンテンツを検索し、一致するすべてのオカレンスを強調表示しようとしています。検索機能はこれに基づいています。次のコードを使用して、見つかった各一致を「強調表示」しています。

protected void ColorTextRanges(Color color)
{
    foreach ( var textRange in locatedInstances )
    {
        if ( textRange != null )
        {
            textRange.ApplyPropertyValue( TextElement.BackgroundProperty, new SolidColorBrush( color ) );
        }
    }
}
4

2 に答える 2

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);
            }
        }
   }
于 2011-08-18T13:48:34.383 に答える
0

私が見つけた最高のパフォーマンスの向上は、画面に出力が表示されていないときにドキュメントを更新することでした。理由はわかりませんが、画面バッファの一部が更新されていないことが推測できます。

于 2011-08-29T09:01:57.330 に答える