はじめに
この記事では、Windows Forms の FolderBrowserDialog における Description プロパティの使い方を解説します。Description はダイアログ上部に表示される短いガイダンス文で、ユーザーが「何を目的にどのフォルダを選べばよいか」を瞬時に理解できるようにするための重要な手がかりです。適切な文言設計と、状況に応じてテキストを動的に切り替える実装パターンを紹介します。
説明
Description とは?
FolderBrowserDialog.Description は、フォルダ選択ダイアログの上部に表示される説明文を設定する文字列です。初期値は空で、未設定の場合は OS 既定の見た目だけが表示されます。短く具体的な文(例:「バックアップ先のフォルダを選択してください」)にすると、迷いの少ないUIになります。
設計のポイント
・目的+対象 を明示(例:「CSV エクスポートの保存先を選択してください」)。
・一文で簡潔に。改行や装飾(HTMLタグ等)は使えない前提で考える。
・状況に合わせて文言を切り替える(処理モード、対象名、ユーザー名など)。
・存在しないフォルダの初期提示は避け、SelectedPath や Environment.SpecialFolder 系で安全な既定を。
注意点
・Description は説明文の表示のみで、初期フォルダを指定する機能はありません(初期フォルダは SelectedPath で指定)。
・表示位置やスタイルは OS により異なります。長文は折り返しや省略で読みにくくなるため短く保つのが無難です。
サンプルコード
用途(インポート元/エクスポート先/バックアップ先)に応じて Description を動的に切り替え、選択結果をテキストボックスに反映する最小アプリです。初期フォルダにはドキュメントを使用します。
using System;
using System.IO;
using System.Windows.Forms;
public class MainForm : Form
{
private readonly ComboBox _mode = new ComboBox();
private readonly TextBox _path = new TextBox();
private readonly Button _browse = new Button();
public MainForm()
{
Text = "FolderBrowserDialog: Description デモ";
Width = 720;
Height = 240;
_mode.DropDownStyle = ComboBoxStyle.DropDownList;
_mode.Items.AddRange(new object[]
{
"インポート元を選ぶ",
"エクスポート先を選ぶ",
"バックアップ先を選ぶ"
});
_mode.SelectedIndex = 0;
_path.ReadOnly = true;
_path.Width = 460;
_path.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
_browse.Text = "フォルダを選択...";
_browse.AutoSize = true;
_browse.Click += OnBrowseClick;
var top = new FlowLayoutPanel
{
Dock = DockStyle.Top,
Height = 72,
Padding = new Padding(8),
FlowDirection = FlowDirection.LeftToRight,
WrapContents = false
};
top.Controls.Add(new Label { Text = "用途:", AutoSize = true, Padding = new Padding(0, 6, 8, 0) });
top.Controls.Add(_mode);
top.Controls.Add(new Label { Text = "選択結果:", AutoSize = true, Padding = new Padding(16, 6, 8, 0) });
top.Controls.Add(_path);
top.Controls.Add(_browse);
Controls.Add(top);
}
private void OnBrowseClick(object sender, EventArgs e)
{
using (var fbd = new FolderBrowserDialog())
{
// 用途に応じて Description を切り替える(短く具体的に)
fbd.Description = GetDescriptionByMode(_mode.SelectedIndex);
// 初期選択フォルダ(存在しない場合はドキュメントにフォールバック)
var initial = _path.Text;
if (string.IsNullOrWhiteSpace(initial) || !Directory.Exists(initial))
{
initial = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
}
fbd.SelectedPath = initial;
fbd.ShowNewFolderButton = true; // 必要なら新規フォルダ作成を許可
var dr = fbd.ShowDialog(this);
if (dr == DialogResult.OK)
{
_path.Text = fbd.SelectedPath;
}
}
}
private static string GetDescriptionByMode(int index)
{
switch (index)
{
case 0: return "インポートするファイルが置かれているフォルダを選択してください。";
case 1: return "エクスポートしたファイルを保存するフォルダを選択してください。";
case 2: return "バックアップを保存するフォルダを選択してください。";
default: return "目的のフォルダを選択してください。";
}
}
}
サンプルのポイント
・GetDescriptionByMode で用途別の短文を返却し、FolderBrowserDialog.Description に設定しています。
・初期フォルダは SelectedPath で指定。Description はあくまで表示用です。
・ShowNewFolderButton を true にして、必要に応じてその場でフォルダを作れるようにしています。
つまづきポイント
初期フォルダと混同する: Description はテキスト表示のみ。初期選択フォルダは SelectedPath を使います。ここを取り違えると「説明を変えたのに初期表示が変わらない」ように見えます。
長文・改行・装飾を入れる: 説明文は短く。改行やHTMLタグ、リッチテキストは想定されていません。折り返しや省略で読みにくくなります。
存在しないパスを初期設定: SelectedPath に存在しないパスを入れると、意図どおりにフォーカスされないことがあります。Directory.Exists で確認しましょう。
OSごとの見た目差: 表示位置や余白は OS により異なります。ギリギリの文字数設計は避け、短い一文にするとブレに強いです。
まとめ
Description は、ユーザーに「このダイアログで何をしてほしいか」を短い言葉で伝えるためのプロパティです。目的+対象 を一文で明確にし、状況に応じて動的に切り替えることで、フォルダ選択の迷いを減らせます。初期フォルダ指定は SelectedPath、新規作成は ShowNewFolderButton と役割を分けて使うのがコツです。



コメント