WPFとC#で、フォルダ選択ダイアログを実装します。
やり方はいくつかありますが、今回はWindowsAPICodePack-Shellをnugetし、CommonOpenFileDialogを使います。
理由はなんとなく使い勝手が良さそうだったからです。
今回使用する手法
- WindowsAPICodePack-ShellをNuGet
- CommonOpenFileDialogで実装
作るもののイメージ
何を作るのかのイメージ図です。
「…」のボタンを押すとフォルダ選択ダイアログが出てきて、フォルダを選択するとテキストボックスにパスが出力されるものを作っていきます。



フォルダ選択ダイアログの作り方
フォルダ選択ダイアログの作り方を、順を追って説明します。
WindowsAPICodePack-ShellをNuGet
GUIでもCUIでもできるので、お好みのほうでどうぞ。
GUIでNuGet
Visual Studioのツールバーから、[プロジェクト] > [NuGetパッケージの管理(N)…]



CUIでNuGet
パッケージマネージャーコンソールでコマンドを打ちます。
PM>Install-Package WindowsAPICodePack-Shell
実装する
早速実装しよう。
pythonで言うimport、C言語で言うincludeのアレだ(語彙力)。
using Microsoft.WindowsAPICodePack.Dialogs;
15~27行目がフォルダ選択ダイアログを表示して、テキストボックスに文字を入れるコードです。
namespace pochiLit
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
using (var file_dlg = new CommonOpenFileDialog()
{
Title = "フォルダを選択してください。"
,InitialDirectory = @"E:\"
,IsFolderPicker = true,
})
{
if (file_dlg.ShowDialog() != CommonFileDialogResult.Ok)
{
return;
}
this.textboxDirPath.Text = file_dlg.FileName;
}
}
}
}
