19
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-07-02

なぜそんなことを

WinForms アプリでフォルダを選択させる際は FolderBrowseDialog を使用するのが一般的だと思いますが、FolderBrowserDialogはいろいろ使いにくい点があります。

  • パスをキーボード入力で指定できない
  • それ故に選択画面開いてからUNCパスを指定できない
  • ツリーのため単純に使いにくい

OpenFileDialogを使ったフォルダ指定方法

OpenFileDialogでのフォルダ指定例
//using System.IO;

void BrowseFolder()
{
    using (var ofd = new OpenFileDialog() { FileName = "SelectFolder", Filter = "Folder|.", CheckFileExists = false })
    {
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            Console.WriteLine(Path.GetDirectoryName(ofd.FileName));
        }
    }
}

補足説明

  • OpenFileDialog の Filter プロパティのフィルター文字列に . を指定するとファイル表示されずフォルダだけ選べるようになります。
  • FileName プロパティに適当な文字列を入れておくことで、ファイルを選択していなくてもその名前のファイルが選ばれている状態になります。
  • CheckFileExists プロパティを false にすることでファイルがなくても指定できます。
  • System.IO.Path.GetDirectoryName() で適当ファイル名部分を消すことでフォルダのパスが得られます。

不都合があることもありますが、実用上これで大体役割を果たします。

19
14
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
19
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?