8
8

More than 5 years have passed since last update.

C# Winforms フォルダ選択ダイアログ

Posted at

C# windows formsのフォルダ選択ダイアログについてです。
どうも標準のFolderBrowserDialogが使いにくかったので
調べてみたところファイル選択ダイアログでもフォルダ選択できるようなので
備忘録として残しておきます。

試したアプリ

image.png
色々な方法がありましたが二つ分かりやすくて簡単なやり方を見つけたので紹介します。
上のような簡易アプリで試しました。

方法1

private void Button1_Click(object sender, EventArgs e)
{
    var dialog = new FolderSelectDialog
    {
        InitialDirectory = Environment.CurrentDirectory,
        Title = "Select a folder to import music from"
    };
    if (dialog.Show(Handle))
    {
        this.textBox1.Text = dialog.FileName;
    }
}

FolderSelectDialogクラスはStackOverflowのこの投稿で作成されているものです。

詳細はリンク先を参照ください。
リフレクションとか使ってある意味ハックしているような感じでしょうか。
フォルダをクリックしたら選択状態になるので直観的に使いやすくて好きです。

方法2

private void Button2_Click(object sender, EventArgs e)
{
    using (var ofd = new OpenFileDialog() {
        FileName = "Folder Selection",
        Filter = "Folder|.",
        ValidateNames = false,
        CheckFileExists = false,
        CheckPathExists = true,
    })
    {
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            this.textBox1.Text = Path.GetDirectoryName(ofd.FileName);
        }
    }
}

こちらはOpenFileDialogのプロパティを使ってフォルダを選択するやり方です。
使い方は方法1とほとんど変わりませんが最下層でないフォルダを選択する時はクリック状態だけでは駄目で
開いた状態でないと選択できないのが少しだけ使いづらいです。
下記記事の方も言われていますが普段使いであればこれで十分だと思います。

OpenFileDialog でフォルダを指定する [ WinForms ]

参考・出典元

https://qiita.com/souten21kobayashi/items/bb25ca320e49b269ef9e
https://qiita.com/otagaisama-1/items/b0804b9d6d37d82950f7
https://stackoverflow.com/questions/31059/how-do-you-configure-an-openfiledialog-to-select-folders
https://stackoverflow.com/questions/15368771/show-detailed-folder-browser-from-a-propertygrid
上記URLに感謝です。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8