6

この記事は最終更新日から1年以上が経過しています。

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

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に感謝です。

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
mototoke
くそ雑魚SEです。 主にC#, pythonあたりを使ってデスクトップアプリを作ってます、あとちょっとだけC++も。 ちょいちょいweb系やdockerなんかも触るようになりました。 最近は時代の流れでデータ分析だとかマイクロサービスだとかクラウドだとか色々なことを少し触れては離れてという事を繰り返しています。 落ち着いて技術のキャッチアップに努めたい。。。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン