ダイアログ(ダイアログボックス)とは、ユーザーに何らかの選択を行わせる際、その間だけ表示される子画面のことです。
例えば、何かのアプリを利用時、ファイル選択をしようとすると、下記の様な子画面が表示されると思いますが、これがダイアログです。

ダイアログは自分で一から作ることも出来ますが、ファイル選択やフォルダ選択等、よく使われるものは、あらかじめ用意されています。
ダイアログの使い方
ダイアログは、メインとなる画面から呼び出しますが、ダイアログ側で何らかのボタン、例えば「開く」「保存」「選択」「キャンセル」などが押されたとき、再び呼び出し元に戻ってきます。
その際、押されたボタンを戻り値として受け取ることができますので、呼び出し側は何のボタンが押されたかを確認します。
「保存」「選択」など、「キャンセル」以外のボタンが押された事が確認できれば、それぞれのダイアログに用意されたプロパティを使って、選択された値を取得し、後続の処理で活用します。

ダイアログの表示方法
ダイアログを表示するには、あらかじめインスタンスを生成しておきます。
その方法には2通りあり、1つはレイアウト作成時に指定する方法です。
TextBoxやButtonなどのコントロールと同様に、Visual Studioのレイアウトエディタからドラッグ&ドロップすることで、Visual Studioが自動生成する画面レイアウトのソースコードに、インスタンスの生成コードが追加されます。

もう1つは、コンストラクタやフォームのLoadイベントの中に、インスタンスを生成するソースコードを自分で記述する方法です。
//ファイルオープンダイアログのインスタンスを生成
OpenFileDialog dialog = new OpenFileDialog();
どちらの方法を使っても結果は同じなので、好きな方法を選べば良いと思います。
ダイアログの表示方法
レイアウトエディタからのドラッグ&ドロップ、ソースコードへの記述のどちらにせよ、そのままでは画面に表示されません。
ShowDialog メソッドを呼び出すことでダイアログが画面に表示され、選択できるようになります。
//ファイルオープンダイアログのインスタンスを生成
OpenFileDialog dialog = new OpenFileDialog();
//ダイアログを表示
dialog.ShowDialog()
戻り値の判定と選択された値の取得
ダイアログが何のボタンが押されて終了したかは、戻り値で判断できます。
そして、キャンセル以外のボタンが押されたときは、何らかの値が選択されたという事なので、ダイアログ毎に用意されたプロパティを使って値を取得します。
通常は以下のような記述をします。
//ファイルオープンダイアログのインスタンスを生成
OpenFileDialog dialog = new OpenFileDialog();
//ファイルオープンダイアログの表示と戻り値のチェック
if(dialog.ShowDialog() == DialogResult.OK)
{
//ファイルオープンダイアログで指定したファイル名を変数に格納
var filename = dialog.FileName;
}
この例はファイルオープンダイアログというファイル選択時に使用するダイアログのソースコードです。
ShowDialog()の戻り値としては、DialogResult の列挙型が返ってきます。
この例では、DialogResult.OK が返ってきた場合、FileNameプロパティの値を変数に代入しています。
DialogResult列挙型には以下の値がありますが、ダイアログの種類によって使い分ける必要があります。
| 列挙型の値 | 押されたボタンの種類 |
|---|---|
| Abort | "中止" という表記のボタンが押された時 |
| Cancel | "キャンセル" という表記のボタンが押された時 |
| Ignore | "無視" という表記のボタンが押された時 |
| No | "いいえ" という表記のボタンが押された時 |
| OK | "OK" という表記のボタンが押された時 |
| Retry | "再試行" という表記のボタンが押された時 |
| Yes | "はい" という表記のボタンが押された時 |
ダイアログの種類
あらかじめ用意されているダイアログは次の5種類です。
| 用途 | ダイアログのクラス名 | 主なプロパティ |
|---|---|---|
| 色の選択 | ColorDialog | Color |
| フォルダーを選択 | FolderBrowserDialog | SelectedPath |
| ファイルを開くための選択 | OpenFileDialog | FileName |
| ファイル保存のための選択 | SaveFildDialog | FileName |
| フォントの選択 | FontDialog | Font |
ダイアログの自作
ダイアログは自分で1から作ることが出来ます。
ダイアログは単なるWindowフォームで出来ているため、Windowフォームクラスを追加し、プロパティを設定することで簡単に作成できます。

通常のWindowフォームには DialogResult というプロパティがありますので、ここにDialogResult列挙体の値をセットした後、Close()メソッドでダイアログを閉じます。
private void UxOK_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
private void UxCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
Windowフォームには、ダイアログとして振る舞うためのShowDialogメソッドも用意されているため、呼び出し側ではインスタンスを生成した後で、ShowDialogを呼び出します。
MyDialog mydialog = new MyDialog();
if(mydialog.ShowDialog() == DialogResult.OK)
{
//OKが押されたときの処理
}
後は、戻り値に応じて処理を書けばOKです。