ファイルやフォルダにタグやコメントをつけて、検索して必要なものを見つけやすくするアプリを作成します。ファイルそのものに情報を書き込むのではなく、別のアプリのデータで管理します。

またデジタルカメラで撮影された写真には、撮影時のさまざまな情報(メタデータ)を埋め込んで保存するための画像ファイルのフォーマットとしてEXIF(イグジフ)があります。これを知らずにアップロードしてしまうと個人情報が漏れる原因になります。そのためExif情報のすべての項目を削除できるソフトも需要があるそうです。

これから作成するアプリはファイルそのものには変化を加えません。ただファイルを移動してしまうとファイルやフォルダに関連づけたデータは意味を失ってしまいます。長短ありますが、そのようなアプリをつくります。

やることは極めてシンプルでファイルパスとデータをセットにしてデータとして保存するだけです。

では簡単なものとして以下を作成します。劣化版のエクスプローラーです。

最初にリストボックスの設定ですが、同時に複数の選択はできないものとします。選択できるファイルとフォルダはひとつだけです。コントロールにフォーカスがないときも選択されているアイテムを強調表示されたままにします。

コンボボックスはドロップダウンメニューに現在使用できるドライブの一覧を表示させます。そして選択するとそのドライブの中身を表示させます。

アプリケーションが起動したら自作メソッド MoveRootFolderを呼び出し、Cドライブのなかのファイルとフォルダを表示します。

MoveRootFolderメソッドはルートフォルダにあるフォルダとファイルを調べて、その名前をリストビューに表示させます。それと同時にCurFolderPathプロパティに現在どのフォルダにいるのかがわかるように、パスをセットします。CurFolderPathプロパティにパスがセットされると現在参照しているフォルダのパスがテキストボックスに表示されます。

system volume informationと$recycle.binは表示させません(アプリの目的上、表示させても意味が無いので)。

リストビューに表示されているアイテムが選択されたら、そのファイル、フォルダをプロパティにセットして名前とパスを表示させます。

アイテムがダブルクリックされたらそれがフォルダであればそのフォルダの中身を表示させます。このときに呼び出されるのが自作メソッド MoveToFolder(string path)です。アクセスできないフォルダの場合はアクセスできないというメッセージボックスを表示させます。

フォルダのなかへ移動できるのであれば、親フォルダに戻れるようにする必要があります。[上へ]ボタンを押せば親フォルダへ移動できます。