C#のフォルダ選択とは?フォルダ選択のコントロールについて

- システム
エンジニア - C#のフォルダ選択のコントロールに興味があります。
- プロジェクト
マネージャー - フォルダ検索といっても複数のコントロールがありますでの、詳しくみていきましょう。
C#のフォルダ選択とは?
C#のフォルダ選択には、フォルダを選択するためのコントロールが複数あります。それぞれ使い勝手が異なりますので、詳しくご紹介していきます。
C#のフォルダ選択に興味のある方はぜひ、ご覧ください。
フォルダの選択方法
C#では、以下コントロールを使用することで、フォルダ選択できます。
・FolderBrowserDialog
・OpenFileDialog
・CommonOpenFileDialog
この他の方法として、フォルダ選択ダイアログを自作する方法もありますが、ここでは紹介しません。
以下の章で、上記のコントロールについて説明します。
FolderBrowserDialog
C#では、FolderBrowserDialogでフォルダ選択できます。
以下のサンプルでは、button1のクリックイベントでFolderBrowserDialogを開きます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Button button1;
Label label;
public Form1()
{
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e)
{
button1 = new Button();
button1.Location = new Point(10, 10);
button1.Text = "FolderBrowserDialog";
button1.AutoSize = true;
button1.Click += Button1_Click;
label = new Label();
label.Location = new Point(10, 100);
label.AutoSize = true;
this.Controls.Add(button1);
this.Controls.Add(label);
}
private void Button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
// ダイアログの説明文
folderBrowserDialog.Description = "フォルダを選択してください。";
// デフォルトのフォルダ
folderBrowserDialog.SelectedPath = @"C:";
// 「新しいフォルダーの作成する」ボタンを表示する(デフォルトはtrue)
folderBrowserDialog.ShowNewFolderButton = true;
//フォルダを選択するダイアログを表示する
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
label.Text = folderBrowserDialog.SelectedPath +"が選択されました。";
}
else
{
label.Text = "キャンセルされました。";
}
// オブジェクトを破棄する
folderBrowserDialog.Dispose();
}
}
}
|
フォルダ選択ダイアログが開き、選択したフォルダがlabelに表示されることが分かります。
しかし、FolderBrowserDialogでは、パスをキーボード入力で指定できないので少し不便です。
このように、C#ではFolderBrowserDialogでフォルダ選択できます。
OpenFileDialog
C#では、OpenFileDialogでフォルダ選択できます。
以下のサンプルでは、button2のクリックイベントでOpenFileDialogを開きます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Button button1, button2;
Label label;
public Form1()
{
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e)
{
button1 = new Button();
button1.Location = new Point(10, 10);
button1.Text = "FolderBrowserDialog";
button1.AutoSize = true;
button1.Click += Button1_Click;
button2 = new Button();
button2.Location = new Point(10, 40);
button2.Text = "OpenFileDialog";
button2.AutoSize = true;
button2.Click += Button2_Click;
label = new Label();
label.Location = new Point(10, 100);
label.AutoSize = true;
this.Controls.Add(button1);
this.Controls.Add(button2);
this.Controls.Add(label);
}
private void Button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
// ダイアログの説明文
folderBrowserDialog.Description = "フォルダを選択してください。";
// デフォルトのフォルダ
folderBrowserDialog.SelectedPath = @"C:";
// 「新しいフォルダーの作成する」ボタンを表示する(デフォルトはtrue)
folderBrowserDialog.ShowNewFolderButton = true;
//フォルダを選択するダイアログを表示する
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
label.Text = folderBrowserDialog.SelectedPath + "が選択されました。";
}
else
{
label.Text = "キャンセルされました。";
}
// オブジェクトを破棄する
folderBrowserDialog.Dispose();
}
private void Button2_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
// ダイアログのタイトル
openFileDialog.Title = "フォルダを選択してください。";
// デフォルトのフォルダ
openFileDialog.InitialDirectory = @"C:";
// ダイアログボックスに表示する文字列
openFileDialog.FileName = "SelectFolder";
// フォルダのみを表示
openFileDialog.Filter = "Folder|.";
// 存在しないファイル指定時の警告
openFileDialog.CheckFileExists = false;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
label.Text = Path.GetDirectoryName(openFileDialog.FileName) + "が選択されました。";
}
else
{
label.Text = "キャンセルされました。";
}
// オブジェクトを破棄する
openFileDialog.Dispose();
}
}
}
|
フォルダのみにフィルタリングすることで、フォルダを選択できることが分かります。
デフォルトのフォルダやタイトルの指定もできます。
OpenFileDialogでは、パスをキーボード入力で指定することもできます。
しかし、ダイアログの”SelectFolder”を消してしまうと、OKをクリックしてもフォルダが選択できません。
このように、C#ではOpenFileDialogでフォルダ選択できます。
CommonOpenFileDialog
C#では、CommonOpenFileDialogでフォルダ選択できます。
事前作業として、以下を実施しておいてください。
1. ソリューションエクスプローラでソリューションを右クリックし、「NuGetパッケージの管理」を選択。
2. 「参照」タブで、「windowsapicodepack」を検索。
3. 「WindowsAPICodePack-Shell」を選択し、インストール。
以下のサンプルでは、button3のクリックイベントでCommonOpenFileDialogを開きます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.WindowsAPICodePack.Dialogs;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
Button button1, button2, button3;
Label label;
public Form1()
{
this.Load += Form1_Load;
}
private void Form1_Load(object sender, EventArgs e)
{
button1 = new Button();
button1.Location = new Point(10, 10);
button1.Text = "FolderBrowserDialog";
button1.AutoSize = true;
button1.Click += Button1_Click;
button2 = new Button();
button2.Location = new Point(10, 40);
button2.Text = "OpenFileDialog";
button2.AutoSize = true;
button2.Click += Button2_Click;
button3 = new Button();
button3.Location = new Point(10, 70);
button3.Text = "CommonOpenFileDialog";
button3.AutoSize = true;
button3.Click += Button3_Click;
label = new Label();
label.Location = new Point(10, 100);
label.AutoSize = true;
this.Controls.Add(button1);
this.Controls.Add(button2);
this.Controls.Add(button3);
this.Controls.Add(label);
}
private void Button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
// ダイアログの説明文
folderBrowserDialog.Description = "フォルダを選択してください。";
// デフォルトのフォルダ
folderBrowserDialog.SelectedPath = @"C:";
// 「新しいフォルダーの作成する」ボタンを表示する(デフォルトはtrue)
folderBrowserDialog.ShowNewFolderButton = true;
//フォルダを選択するダイアログを表示する
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
{
label.Text = folderBrowserDialog.SelectedPath + "が選択されました。";
}
else
{
label.Text = "キャンセルされました。";
}
// オブジェクトを破棄する
folderBrowserDialog.Dispose();
}
private void Button2_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
// ダイアログのタイトル
openFileDialog.Title = "フォルダを選択してください。";
// デフォルトのフォルダ
openFileDialog.InitialDirectory = @"C:";
// ダイアログボックスに表示する文字列
openFileDialog.FileName = "SelectFolder";
// フォルダのみを表示
openFileDialog.Filter = "Folder|.";
// 存在しないファイル指定時の警告
openFileDialog.CheckFileExists = false;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
label.Text = Path.GetDirectoryName(openFileDialog.FileName) + "が選択されました。";
}
else
{
label.Text = "キャンセルされました。";
}
// オブジェクトを破棄する
openFileDialog.Dispose();
}
private void Button3_Click(object sender, EventArgs e)
{
CommonOpenFileDialog commonOpenFileDialog = new CommonOpenFileDialog();
// ダイアログのタイトル
commonOpenFileDialog.Title = "フォルダを選択してください。";
// デフォルトのフォルダ
commonOpenFileDialog.InitialDirectory = @"C:";
// フォルダ選択モード
commonOpenFileDialog.IsFolderPicker = true;
if (commonOpenFileDialog.ShowDialog() == CommonFileDialogResult.Ok)
{
label.Text = commonOpenFileDialog.FileName + "が選択されました。";
}
else
{
label.Text = "キャンセルされました。";
}
}
}
}
|
CommonOpenFileDialogでは、パスをキーボード入力で指定することもできます。
このように、C#では、CommonOpenFileDialogでフォルダ選択できます。
- システム
エンジニア - 基本的に3つの方法が存在するのですね。
- プロジェクト
マネージャー - 他に自作することも可能ですが、まずは基本の3つからマスターしていきましょう。
まとめ
いかがでしたでしょうか。
C#では、「FolderBrowserDialog」、「OpenFileDialog」、「CommonOpenFileDialog」を使用することでフォルダを選択でき、ここでは紹介していませんが、フォルダ選択ダイアログは自作することもできます。
ぜひ、ご自身でソースコードを書いて、理解を深めていきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)