フォルダ参照ダイアログ(FolderBrowserDialog編)

System.Windows.Forms.FolderBrowserDialogクラス

System.Windows.Formsにはフォルダ参照ダイアログが用意されています。

サンプル

一番簡単にフォルダ参照ダイアログを表示するには以下のようにするとよいでしょう。

using (FolderBrowserDialog dlg = new FolderBrowserDialog())
{
    //ダイアログを開く
    if (dlg.ShowDialog() == DialogResult.OK)
    {
        MessageBox.Show(dlg.SelectedPath);
    }
}

FolderBrowserDialogクラスはIDisposableインターフェースを継承しているのでusingを付けて使用後は解放することができます。もし宣言したフォルダ参照ダイアログクラスオブジェクトを再利用するということでなければusingを付けるべきだと考えます。

プロパティ

FolderBrowserDialogクラスに用意されているプロパティを設定することで、ダイアログのタイトルなどいろんな設定ができるようになります。

以下に代表的になプロパティを紹介します。

プロパティ名説明
Descriptionダイアログに表示する説明文を設定します。
RootFolderフォルダからの参照の開始位置を指定します。
SelectedPath選択されたフォルダを示します。
ShowNewFolderButton「新しいフォルダー」ボタンを設置するかどうかの値を設定します。

こんな関数はいかがでしょうか?

フォルダ参照ダイアログの関数を作りました。

関数例

/// <summary>
/// フォルダ参照ダイアログを呼び出してパスを取得する
/// </summary>
/// <param name="select_path">初期パス(in)/選択パス(out)</param>
/// <returns>true/false</returns>
private bool GetDirNameFromFolderDialog(ref string select_path)
{
    using (FolderBrowserDialog dlg = new FolderBrowserDialog())
    {
        dlg.Description = "出力するフォルダを選択してください。";
        dlg.RootFolder = Environment.SpecialFolder.MyComputer;
        dlg.SelectedPath = select_path;
        dlg.ShowNewFolderButton = true;

        //ダイアログを開く
        if (dlg.ShowDialog() != DialogResult.OK)
        {
            return false;
        }

        //選択したフォルダを取得する
        select_path = dlg.SelectedPath;

        return true;
    }

}

使用例

private void btnSansyo_Click(object sender, EventArgs e)
{
    //初期フォルダ名を設定する場合はここにセットする
    string dir = "";

    //フォルダ参照ダイアログを開く、キャンセルの場合は関数から抜ける
    if (GetDirNameFromFolderDialog(ref dir) == false) return;

    //取得したフォルダ名をテキストボックスにセットする
    this.DirNameTextbox.Text = dir;
}

実行結果

まとめ

フォルダ保存ダイアログを使ってダイアログを作成するときにこの記事が皆様のお役に立てたなら幸いです。

コメント

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