前回は登録しているファイルにコメントをつける機能を追加しました。

前回の記事はこちら

登録しているファイルにコメントをつける 自作フォトビューアー

今回はコメントのなかにある文字列を検索する機能を追加します。これならファイルを探すときに便利です。

まずは検索ボックスを表示させましょう。

あとは検索用のダイアログを表示させて検索結果を表示させるだけです。ダイアログの検索ボタンが押されたら、全TreeNodeのDataオブジェクトが集められ、コメント内に目的の文字列があるかどうかについて調べられます。条件を満たしたものがあれば、それをつかって別の新しいForm1クラスから生成されたダイアログが表示されます。

Form1クラスで生成されているのでメニューも使えます。ただ困ったこともあります。このダイアログからもコメントを編集することができてしまうことです。

それからコメントが反映されるのは別のTreeNodeが選択されるときです。そのため最後に選択されていたTreeNodeでコメントを編集しても反映されません。

この点については以下で対応できます。検索ダイアログが終了するときにどのTreeNodeが選択されているか調べて、それに対応するDataオブジェクトにコメントを保存すればよいのです。

もうひとつの問題は検索を開始するときに選択されているTreeNodeのコメントが編集されていた場合です。

このときはまずそれぞれのTreeView.SelectedNodeに対応するDataオブジェクトが同じかどうかを確認します。そして同じであれば以下のコードでいったんどこも選択されていない状態にして改めて選択すれば検索結果を表示していたダイアログでのコメントの変更も反映されます。

以下は検索用のダイアログを表示して[検索]ボタンが押されたら結果を表示するメソッドです。CreateTreeFromDataメソッドはDataのリストからツリー構造を構築するためのメソッドです。

検索結果を別のファイルに保存したくなることもあるかもしれません。他にTreeNodeの横にあるチェックボックスにチェックがあるものだけを保存するメソッドもつくってみました。