【WPF】フォルダ 選択 ダイアログ ユーザーコントロールを自作しよう!

プログラミング入門
この記事は約3分で読めます。

DIYプログラミングにおいて、フォルダを選択したいケースはよくあります。

WindowsFormだとフォルダ選択ダイアログが標準で用意されていましたので、ツールボックスからドラッグ&ドロップで画面に張り付ければ事足たのですが、WPFの場合は残念ながら用意されていません。

WPFでの実装方法としては2種類あり、1つはNuGet を使って WindowsAPICodePack-Shell というパッケージをインストールして使う方法、もう1つはWindowsForm に含まれているフォルダ選択ダイアログを呼び出す方法です。

今回は「ちょっとフォルダを選択したいだけなのに、わざわざ NuGetをつかうのも何だかな~」という方の為に、WindowsForm を使いたいと思います。

また、今後のプログラミング作業効率化のために、ユーザーコントロールとして部品化してみようと思います。

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

今回作るのはこんな感じのユーザーコントロールです。

テキストボックスとフォルダダイアログを呼び出す為のフォルダアイコンで構成されています。

機能としては次の通りです。

  • テキスト部にフォルダ名を直接入力
  • フォルダ選択ダイアログの表示とフォルダの選択
  • テキスト部にファイル又はフォルダをドラッグ&ドロップで入力
  • フォルダ名が入力された時のイベント発生

右端のフォルダアイコンをクリックすると、次のレイアウトのフォルダ選択ダイアログが表示されます。

WindowsFormのフォルダ選択を使うには参照設定が必要

まず、ソリューションエクスプローラーの「参照」⇒「参照の追加」を選択し、参照マネージャを表示して下さい。

続けてアセンブリをクリックし、System.Windows.Forms を探してチェックを入れて、OKボタンをクリックします。

ユーザーコントロールの追加

ユーザーコントロールは、プロジェクト(今回の例では UserControlTest)を右クリックし、表示されるメニューから「追加」⇒「ユーザーコントロール(WPF)」を選択します。

新しい項目の追加ダイアログが表示されるので、名前をFolderSelectControl.xaml に替えて、追加ボタンをクリックします。

ダウンロード先

今回のソースコードのダウンロード先は次の通りです。

デモプログラムが含まれていますので、動作確認にお使いください。

尚、デモプログラムの仕様については、こちら に記載しています。

ソースコード

では、ソースコードを見ていきましょう。

画面(Xaml)は次の通りです。

C#のソースコードは次の通りです。

次の3つのバターンの時、FolderSelectedというイベントが発生するようにしています。

  • テキスト部に手入力しエンターキーを押した時
  • フォルダ選択ダイアログでフォルダを選択した時
  • ドラッグ&ドロップでフォルダを入力した時

まとめ

今回はWindowsFormに標準搭載されているフォルダ選択ダイアログを使ったフォルダ選択ダイアログのユーザーコントロールを自作してみました。

WindowsForm と同じ感覚(イベントドリブン方式)で作っていますので、WindowsFormに慣れている方には理解しやすいかと思います。

これをベースに好きなように改造して使っていただければと思います。

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