WPFアプリケーションで、TextBox
のように各行にメモリを再割り当てせずに、大量のテキストをストリーミングできる「ファイル内検索」出力ペインを作成したいと思います。
WPF TextBox
には、連続した文字列を格納する単一のText
プロパティがあります。コンテンツを追加するたびに、textBox.Text += "New Text"
を実行する必要がありますが、これは悪いことです。
理想的には、その制御は仮想であり、目に見える線のためだけに最小限のリソースを必要とします。
標準のListBox
とVirtualizingStackPanel
を使用することを考えましたが、行をまたいでテキストを選択することはできません。
(新しい行が追加されるたびに、コントロールを更新したい)
なにか提案を?
アプリケーションで1万を超える検索結果が予想されない場合は、TextBlockコントロールまたは読み取り専用の複数行のTextBoxで十分です。
TextBoxクラスにはAppendText()メソッドがあり、これは十分に高速である必要があります。
テキストの強調表示/書式設定が必要な場合は、RichTextBoxを使用することをお勧めします。
非常に大きなコンテンツがある場合、残念ながら、すべてのWPFテキストボックスと同様のコントロールは非常に低速です。 この質問 を参照してください。代わりに AvalonEdit を使用できます。
RichTextBox コントロールを検討または試しましたか?