C-MOON

主にプログラミング勉強中のメモを書いていきます。

【C#】「ファイルを選択」ダイアログでフォルダを選択する

C#で作るWindowsフォームアプリで、フォルダを選択することがあると思います。
標準のフォルダ選択クラスとして、FolderBrowserDialogが用意されていますが、フォルダパスの見通しが悪い上、パスのコピペができず、使い勝手が悪いです。 f:id:thenewsinpu:20180421223154p:plain

OpenFileDialogの画面でフォルダを選択可能なクラス「CommonOpenFileDialog」の使用方法を調べたので、手順をメモします。

  1. 使用するソリューションをVisual Studioで開く。

  2. ソリューションエクスプローラーからソリューションかプロジェクトを右クリック→「NuGetパッケージの管理」を選択。

  3. 参照タブで、「windowsapicodepack」を検索。

  4. 「WindowsAPICodePack-Shell」をインストール。(複数ありますが、作成者:Aybeさんのものを選びました。) f:id:thenewsinpu:20180421223251p:plain

  5. 追加したパッケージのusingをソースコードに入力。
    using Microsoft.WindowsAPICodePack.Dialogs;

  6. フォルダ選択画面を表示するコードを入力。

var dialog = new CommonOpenFileDialog("フォルダ選択");
// フォルダ選択モード
dialog.IsFolderPicker = true;

if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
// フォルダ選択後の処理
}


以上の手順で、下画像のようなフォルダ選択画面を実現できます。 f:id:thenewsinpu:20180421224159p:plain