アウトラインプロセッサーに検索機能を追加します。検索する場所も現在選択されているノードだけ、ファイル全体、選択されているノードの配下など選択できるようにします。また前回の検索結果から絞り込み検索もできるようにします。

DataクラスのなかにはRichDataプロパティがあり、このなかにRtfプロパティとTextプロパティがあります。Textプロパティを調べれば検索している文字列があるかどうかわかります。

下は検索結果を表示するフォームです。左がリストボックス、右はリッチテキストボックスになっていて、ここからも編集が可能です。

つぎにSearchFormを表示します。SearchFormの検索をクリックすると検索が開始され、プログレスバーでどれくらい処理が進んだかもわかります。

検索範囲が指定されたらSyncTreeView.GetTreeNodeExsでTreeNodeExのリストを作成して、そのなかを調べます。

検索結果を表示するフォームを表示します。そしてそれをリストに格納しています。

最後に検索結果を表示するフォームです。ListBoxは選択アイテムが変更した後のイベントしかないので、変更があったらそれをフィールド変数に保存して、それを利用して変更前後のアイテムがそれぞれどれであるかがわかるようにしています。