【WPF+C#】フォルダ選択ダイアログの使い方(WindowsApiCodePack版)

プログラミングTips
この記事は約4分で読めます。

以前、こちらの記事でフォルダ選択ダイアログを使ったユーザーコントロールの自作について紹介しました。

今回は、WindowsApiCodePackというライブラリをインストールすることで利用可能な、より洗練されたデザインの「フォルダ選択ダイアログ」について、ライブラリのインストール方法と使い方について紹介したいと思います。

尚、今回はWPFでの使用例を紹介していますが、ライブラリの使い方はWindowsFormと共通であり、またFramework も Microsoft Framework 4.7 や 4.8だけでなく、.NET6 でも利用可能です。

フォルダ選択ダイアログの概要

今回紹介するフォルダ選択ダイアログは、以下の様なデザインになります。

前回の記事で紹介したものは、Visual Studioをインストールした際に標準添付されるライブラリを使っていましたので手軽ではありますが、デザインが少し見劣りします。

今回はNugetからWindowsApiCodePackをインストールする必要はありますが、Windows標準のフォルダ選択ダイアログっぽいものが表示されます。

WindowsApiCodePackのインストール方法

インストール方法は、Visual Studioの Nuget でライブラリを選択し、インストールするだけです。

ややこしいのは、どのライブラリを選ぶかです。

Nugetの検索欄で、”WindowsAPICodePack”と入力すると、候補の一覧が表示されます。

似たような名前のライブラリがたくさん表示されますが、「Microsoft-WindowsAPICodePack-Shell」を選んで下さい。

WindowsAPICodePack-ShellとMicrosoft-WindowsAPICodePack-Shell は作者が同一人物ではありますが、微妙に仕様の差異がありますので、間違って選ばないようにご注意ください。

インストールを開始すると、以下のダイアログが表示されます。

Microsoft-WindowsAPICodePack-Shell を選ぶと、依存関係のある Microsoft-WindowsAPICodePack-Core が自動で選択されていることが分かります。

ここで「OK」をクリックすると、インストールできます。

フォルダダイアログの使い方

まず、最初に Microsoft.WindowsAPICodePack.Dialogs をソースコードの冒頭に記述します。

ダイアログを表示する際は、生成したインスタンスに対して、IsFolderPicker を true に設定し、ShowDialogメソッドを呼びます。

IsFolderPicker が false の場合は、フォルダではなくファイル選択ダイアログとして動作しますので、必ず true を設定して下さい。

ShowDialogメソッドの戻り値が CommonFileDialogResult.Ok だった場合、FileNameプロパティを使って選択されたフォルダ名を取得します。

プロパティ名は FileName ですが、ちゃんとフォルダ名が格納されています。

主なプロパティは次の通りです。

プロパティ内容
Titleダイアログのタイトルを設定dlg.Title = “フォルダ選択”
IsFolderPickerダイアログの動作を設定
true:フォルダ選択ダイアログ
false:ファイル選択ダイアログ
省略時はfalseが設定されている
dlg.IsFolderPicker = true;
InitialDirectoryダイアログ表示時の選択候補となるフォルダ
省略すると直近のフォルダが選択される
dlg.InitialDirectory = @”C:\”
DefaultDirectory直近に表示したフォルダが見つからない場合の
代替フォルダ
dlg.DefaultDirectory = @”C:\Temp\”;
FileName選択したフォルダ名

サンプルソース

今回のサンプルプログラムはWPF+C#+.NET6.0 という構成です。

WinApiFileDialogSample という名前でプロジェクトを作成しました。

まずはXAMLのソースコードです。

次に、C#のソースコードです。

まとめ

今回は、WindowsApiCodePack というフリーのライブラリを使ってフォルダ選択ダイアログを表示するために、Nugetを使ったインストール方法と、ダイアログの表示、選択されたフォルダの取得方法について解説しました。

WindowsApiCodePack をインストールする必要はありますが、見た目は美しいので、見た目にこだわる方は是非このライブラリをご活用ください。

この記事が、皆様のプログラミングの一助になれば幸いです。

タイトルとURLをコピーしました