Windowsフォームのアプリで、Windowsエクスプローラのようなフォルダやドライブ一覧をツリー表示する方法を調べてみた。
nugetの「ExpTreeLib」というライブラリを使うことによってC#やVB.NETで簡単?に実現できるらしい。
備忘録ということで、いきなり手順。
nugetのライブラリ「ExpTreeLib」をダウンロード。
https://www.nuget.org/packages/ExpTreeLib/
“exptreelib.3.2.0.nupkg”という名(V3.2.0の場合)のファイルがダウンロードされる。
ファイルを任意のフォルダに移動しておく。
D:\nuget\exptreelib.3.2.0.nupkg
Visual Studioを起動。
「ツール>NuGet パッケージ マネージャ」>パッケージ マネージャ設定」メニューを選択。
ツリーで「NuGetパッケージ マネージャー>パッケージソース」を選択し、画面右上の「+」ボタンをクリック。
画面右下の「ソース」右側の「…」ボタンをクリックし、ダウンロードしたファイルがあるフォルダを選択。
ソース欄のパスが書き換わるので、「更新」ボタンをクリック。更に「OK」をクリック。
これで、nugetのライブラリ「ExpTreeLib」の準備が完了。
ツリーで「インストール済み>Visual C#>Windowsクラッシック デスクトップ」を選択し、更にリストから「Windowsフォーム アプリケーション(.NET Framework)」を選択。
(C#でなく、Visual BasicでもOK)
下側の名前、場所、ソリューション名は必要に応じて変更し「OK」ボタンをクリック。
「ソリューション エクスプローラー」内の「参照」を右クリックし、ポップアップメニューから「NuGetパッケージの管理」を選択。
NuGetパッケージ管理の画面で、「参照」タブを選択し「パッケージ ソース」から「Package source」を選ぶと、先ほど準備した「ExpTreeLib」が表示される。
「ExpTreeLib」を選択し「インストール」ボタンをクリック。
「変更のプレビュー」ダイアログが表示されるので、確認して「OK」クリック。
インストールが完了すると「出力」ウインドウに結果が表示され、ソリューションエクスプローラーの「参照」の中に「ExpTreeLib」が追加される。
そして更に、今度はフォーム上にExpTreeのコントロール部品を貼り付けできるよう、ツールボックスにExpTreeを表示させておく必要がある。
ツールボックス上で右クリックし、「アイテムの選択」ポップアップメニューを選択。
「ツールボックス アイテムの選択」ダイアログで「.NET Frameworkコンポーネント」タブを選択。
画面下側にある「参照」ボタンをクリック。
ここでExpTreeのdllを選ぶ。
# 正直、正しいやり方が分からないので、もし誰か他の方法で解決する方法を知っていたら
# コメントください。
<dllの準備方法>
最初にダウンロードした”exptreelib.3.2.0.nupkg”というファイルは、zip形式で圧縮されているようなので、”exptreelib.3.2.0.nupkg”をコピーして、”exptreelib.3.2.0.zip”という風に拡張子変更し、解凍したファイルを用意しておく。
解凍したファイル群のlibフォルダ内に”ExpTreeLib.dll”が存在するのでこれを利用。
「開く」ダイアログで先ほど準備した”ExpTreeLib.dll”を選ぶ。
すると、一覧に”ExpTree”が追加されるので「OK」ボタンをクリック。
これで、ツールボックスに「ExpTree」が表示されるようになる。
実際に、エクスプローラ風ツリービューをフォームに貼り付けてみる。
先ほど追加した「ExpTree」コントロールを、Form1.cs[デザイン]にドラッグ&ドロップ。この時点では白枠。
自作ソフト「画像位置情報取得ツール」のツリー部分が思うように作れていない部分があったので、この方法で実装し直してみる予定。
まだまだ先になりそうだけど。。