【C#】TreeView と ListView でエクスプローラーのような画面を作成してみた
おはようございます。
今回はC#のWindowsFormsで、
エクスプローラーのようなUIを実装したいと思います。
WindowsFormsはまだブログに書いていないので、新規でプロジェクトを作成してください。
スポンサーリンク
画面の作成

左側にフォルダのTreeView、右側に選択されたツリー項目に格納されているフォルダ・ファイル一覧を表示するための ListView を配置します。
プログラムの実装
ファイルサイズ変換処理
ファイルサイズ(バイト)を単位付きに変換するメソッド
リストビュー項目設定処理
TreeView が選択された際に、格納されている項目の内容を ListView に設定するメソッド
起動時の処理
画面表示時に TreeView と、デフォルトで選択されるフォルダ(ドライブ)の内容を ListViewに設定します。
TreeView展開時の処理
展開された項目の子ノードを追加する処理を実装
TreeView項目選択時の処理
選択された項目に格納されているファイル・フォルダ一覧を表示
起動してみる

左側、TreeViewにドライブ、フォルダの一覧、右側に選択されたフォルダの内容を表示することができました。
まとめ
エクスプローラーのようなコントローラーであれば標準であっても良さそうなもんですけどね。
とりあえずしばらくは WindowsForm をやっていく予定です。
ではでは。
ディスカッション
コメント一覧
はじめまして。
こちらの階層表示をAzureを用いてBLOB内のフォルダ等を表示させることは可能でしょうか?
同じようにTreeViewにStrageAccountの表示、BLOB、コンテナーの一覧、Listboxに選択したコンテナー内のファイルを表示させたいのですが
名無し様
いつもブログを観ていただきありがとうございます。
ご質問の件ですが、「Azure Strage の BLOB に格納しているファイルなどの一覧を、WindowsFormsで作成したクライアントアプリで TreeView 表示、参照したい」ということでよろしいでしょうか?
申し訳ありません、私自身 Azure には詳しくないので確かなことは分かりません。
調べてみたところ「WindowsAzure.Storage」や「Azure.Storage」パッケージを利用すればできるのではないかと思います。
(ただし Account の一覧取得は難しいかもしれません)
下記、参考URLです。
https://docs.microsoft.com/ja-jp/dotnet/api/overview/azure/storage?view=azure-dotnet
https://qiita.com/kingkinoko/items/37694c71dbf036ccc157
お役に立てず申し訳ありません。。
doradoraさんのサイトを参考にC#の勉強をさせていただいています.
そのままコピペしてプログラムを実行したのですが
listview にドライブ以下のノードが作成されません.
原因がわかりますか?
いつもブログを見ていただきありがとうございます。
ご質問の件、
もしかしたら TreeView をクリックした際のイベントを登録されていないのでないでしょうか。
そうであれば、
デザインビューを開き、左側の TreeView を選択、
プロパティのイベント設定からクリックイベントの設定を追加し、
ソースに追加されたイベントメソッドに「TreeView項目選択時の処理」のように「setListItem」関数の呼び出しを入れてあげてください。
よろしくお願いします。