Home > C#

C# WPFで、Windows API Code Packを利用して、フォルダ選択ダイアログを使う

新規作成日 2019-02-19
最終更新日

WPFには、フォルダ選択ダイアログが用意されていません。

WPFで、フォルダ選択ダイアログを使用するには、自分で、ダイアログを作成するか、ツールキットに用意されてものを使用します。

フォルダ選択ダイアログを利用するためのダイアログは、いくつか存在します。

たとえば、この文章を書いている時点で、nugetで、「Folder Selection Dialog」を検索すると、934パッケージが見つかります。

nugetで、「Folder Selection Dialog」を検索

Windows API Code Packを利用して、フォルダ選択ダイアログを使用する利点は、Webサイトで利用方法が紹介されていることです。

Windows API Code Packのフォルダ選択ダイアログを利用方法を紹介しているWebサイト

WindowsAPICodePack をプロジェクトにインストールする

Windows API Code Packのフォルダ選択ダイアログを利用するためには、プロジェクトに、次のWindows API Code Packをインストールする必要があります。

※Shellをインストールすれば、依存関係により、Coreは自動でインストールされます。

  • WindowsAPICodePack-Shell
  • WIndowsAPICodePack-Core

Windows API Code Packのフォルダ選択ダイアログの基本的な使い方

メインウインドウでは、ボタンのクリックイベントで、フォルダ選択ダイアログを呼び出し、取得したフォルダパスを格納するためのTextBlockがあります。

MainWindow.xaml

<Window x:Class="FolderSelectionDialog.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        Title="MainWindow" Height="100" Width="400">
    <DockPanel>

        <Button DockPanel.Dock="Top" Name="GetFolderName" Click="GetFolderName_Click">
           フォルダ名を取得
        </Button>
        <TextBlock Name="FolderPath" />
    </DockPanel>
</Window>

Windows API Code Packのフォルダ選択ダイアログで、使用する名前空間は、「using Microsoft.WindowsAPICodePack.Dialogs;」です。

ダイアログの名前(キャプション)は、Textプロパティでも指定できますが、インスタンスを生成する際に、引数で指定するとコードが見やすくなります。

MainWindow.xaml.cs

using Microsoft.WindowsAPICodePack.Dialogs;
using System.Windows;

namespace FolderSelectionDialog
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void GetFolderName_Click(object sender, RoutedEventArgs e)
        {
            // ダイアログのインスタンスを生成
            var dialog = new CommonOpenFileDialog("フォルダーの選択")
            {
                // 選択形式をフォルダースタイルにする IsFolderPicker プロパティを設定
                IsFolderPicker = true,
                InitialDirectory = @"H:\C#プロジェクト"  //開いておくフォルダ
            };

            // ダイアログを表示
            if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
            {
                FolderPath.Text = dialog.FileName;
            }

        }
    }
}

プログラムの動作

プログラムを実行するとメインウインドウが表示されます。

プログラムを実行するとメインウインドウが表示されます。

フォルダ名を取得ボタンを押すと、フォルダ選択ダイアログが表示されます。

フォルダ名を取得ボタンを押すと、フォルダ選択ダイアログが表示されます。

ダイアログで、フォルダを選択し、「フォルダを選択」ボタンを押すと、ダイアログが閉じられ、メインウインドウに、フォルダのパスが表示されます。

ダイアログで、フォルダを選択し、「フォルダを選択」ボタンを押すと、ダイアログが閉じられ、メインウインドウに、フォルダのパスが表示されます。
  
メソッド
メソッド 説明
IsFolderPicker フォルダ選択ダイアログの場合はtrue
InitialDirectory 最初に開くフォルダ
Title ダイアログのタイトル(キャプション)

自分で独自ライブラリを作成する場合

独自ライブラリを自分で作成し、WPFでフォルダ選択ダイアログを実現する情報を提供しているサイト

実装の参考になります。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」