こんな場面、あると思います。
通常は、ダイアログボックスで「ファイルを選択したい」、という事が大半ですが、時にはフォルダを選択したい!という事も。
そんな時の解決策を紹介します。
ダイアログボックスでフォルダを選択する方法
「OpenFileDialog」を使用した方法です。
1つのフォルダを選択し、選択したフォルダ名(フルパスなど)を取得できる方法です。
※フォルダの複数選択は、本記事の方法では無理です。
※OpenFileDialogを使う以外では、「FolderBrowseDialog」を使った方法があります。以下の記事で紹介していますので合わせてご覧ください(本記事最後にもリンク張っておきますので、最後まで読み終わってからこちらの記事もご覧ください)
【C#】ダイアログでフォルダを選択する方法|FolderBrowserDialogを使った方法を紹介
「ダイアログを表示してユーザーにフォルダーを選択させたい」 という場合の方法です。 今回は「FilderBrowseDialog」を使用した方法を紹介していきます。 ダイアログでフォルダ ...
続きを見る
OpenFileDialogでフォルダを選択する方法
コード例を公開
では解答コードから。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | private void Button1_Click(object sender, EventArgs e) { using(OpenFileDialog dialog = new OpenFileDialog()) { dialog.FileName = "File"; dialog.CheckFileExists = false; if (DialogResult.OK == dialog.ShowDialog()) { string[] filenames = dialog.FileNames; Debug.WriteLine(filenames[0]); string filename = dialog.FileName; Debug.WriteLine(filename); } else { // キャンセルの場合。なにもしない。 } } } |
コードはこんな感じです。
テスト用の画面はこんな感じ
今回作成したサンプルは、こんな画面。
ボタンとテキストボックスを配置した、シンプルな形。
先ほどのコードは、このボタンをクリックしたときのイベント(処理)です。
ボタンをクリックすると、OpenFileDialogを生成しフォルダを選択できるようにしたもの。
【ポイント】ファイルダイアログでフォルダを選択する方法
ポイントは以下の2つ。
1 2 | dialog.FileName = "File"; // ファイル名(初期値)を適当に設定 dialog.CheckFileExists = false; // ファイルが存在するかチェック→チェックしない |
FileNameに適当な名前をいれる
こんな感じで、下の「ファイル名」の欄に、適当な名前を自動で入れてあげるようにします。
※「File」は自分の好きな適当な文字列でOKです。
ここで「開く」を押すと、このダイアログボックは閉じます。
すると、以下のコードではこの「File」までのフルパスを取得することができます。
1 | string filename = dialog.FileName; |
この例では、以下のフルパスが取得できます。
本来は、MyMusicフォルダの中には、指定した「File」フォルダは無いのですが、このFileのフルパスを取得できました。
※ちなみに、ソースコード上でデフォルト名を入れてあげる事は必須ではありません。ユーザーに適当な文字を入力してもらうでもOKです。でも実用上それは面倒なので、ソースコード上で適当な文字を初期値として設定するようにしています。
「CheckFileExists」を「false」に設定する
続いて2つ目の「CheckFileExists」を「false」に設定している点。
これはその名の通り、「ファイル(フォルダ)が存在するかのチェックをするorしない」を「しない」に設定している処理。
これを「しない:false」にしないと、フォルダを選択でるようになりません。
ためしに「true」にしてみると、こんなコーションメッセージが表示されます。
ファイル名の欄に適当な名前を入れて「開く」を押したときの挙動です。
ファイル(フォルダ)が存在しないので、「ファイルが見つかりません」というコーションがでます。
※この例では「C:\My Music:\File」フォルダは存在しないよ!というコーション。
まとめ|OpenFileDialogでもフォルダを選択することは可能
ファイル選択ダイアログで一般的な「OpenFileDialog」でフォルダを選択する方法を紹介しました。
ポイントは以下。
1 2 | dialog.FileName = "File"; // ファイル名(初期値)を適当に設定 dialog.CheckFileExists = false; // ファイルが存在するかチェック→チェックしない |
ぜひ参考にしてみてください!
「FolderBrowseDialog」を使ったフォルダ選択方法について以下の記事で紹介しています。こちらも合わせてご覧ください。
※個人的には、本記事のOpenFIleDialogを使った方法が好きです。
【C#】ダイアログでフォルダを選択する方法|FolderBrowserDialogを使った方法を紹介
「ダイアログを表示してユーザーにフォルダーを選択させたい」 という場合の方法です。 今回は「FilderBrowseDialog」を使用した方法を紹介していきます。 ダイアログでフォルダ ...
続きを見る