これまではエクスプローラーの劣化版のようなリストビューをつかってファイル等にコメントをつけてきました。今回はルートフォルダから順番にたどっていくのではなくファイル等のパスとコメントを直接ダイアログに入力してコメントを設定することができるようにします。

上側のテキストボックスはFilePathTextBoxクラスを使用しています。ファイルやフォルダをドロップしたり、ファイル等をコピーしてペーストするとそのパスが入力されます。FilePathTextBoxクラスは以下のページで解説しています。

ファイルをドラッグするとパスが入力されるテキストボックス 自作コントロール

FilePathTextBoxのテキストが変更されるとFilePathTextBox.Textは有効なパスなのかどうかを調べます。そしてそのパスが存在する場合はForm1.FileTagsのなかに登録されているかどうかを調べます。登録されている場合はこのコメントをリッチテキストボックスに表示させます。パスではない文字列、パスではあっても登録されていない場合はなにも表示させません。

[登録]ボタンがクリックされるとFilePathTextBoxに入力されている文字列はファイル等のパスなのか調べます。そして有効なパスである場合はすでに登録されたデータがあるかどうかを調べます。

FilePathTextBoxに入力されている文字列はファイル等のパスではない場合はエラーメッセージを表示します。既に登録されているデータがある場合は上書きをします。登録されているデータがない場合は新しく登録します。

[操作] ⇒ [パスを指定して登録]を選択すると上記のフォームが表示されます。Form1のリストビューで同じファイル等が選択されている場合はリッチテキストボックスに表示されているコメントを新たに登録されたものに変更します。

ところでリストビューにもコメントの項目があります。長すぎるコメントを表示することはできませんが、先頭の10~20文字程度(改行なし)であれば表示させることができそうです。

GetCommentFromPath(string path)メソッドはファイル等のパスからコメントを取得するためのものです。最大で30文字取得します。

リストビューで選択されているファイル等が変更されたときもコメントの項目を変更しなければなりません。しかし本当に変更しなければならないのは新しく選択されたファイル等とそれまで選択されていたファイル等が同じフォルダにあるときだけです(異なる場合はリストビューの内容が完全に入れ替わってしまうため)。

そして今回の処理によってファイル等のコメントが変更されたときも、コメントがつけられたファイルと同じフォルダを参照しているときはリストビューの項目を変更する必要があります。