WPF MessageBoxサンプル作成ツール
Windows 標準の MessageBox をリアルタイムにシミュレート。
GitHub でビルド済み exe を公開中。開発環境なしで UI の仕様検討を即座に開始。
概要:対話的な MessageBox シミュレーター
WPF MessageBox サンプル作成ツールは、WPF の標準 MessageBox を直感的にカスタマイズし、その場で実際の挙動を確認できるプロトタイピングアプリです。
本文、タイトル、ボタン、アイコン、既定の結果、表示オプションを設定し、その設定のまま実際の MessageBox を表示できます。
本ツールは GitHub の Release ページにてビルド済みの実行ファイル(.exe)を公開しているため、Visual Studio などの開発環境がインストールされていない PC でもダウンロードするだけで利用できます。 ただし配布しているビルドはフレームワーク依存のため、対応する x64 版の .NET デスクトップ ランタイムは導入済みである必要があります。 詳細は後述の動作環境を参照してください。
開発背景:「環境構築の壁」を取り払うために
WPF 開発において、エラーメッセージや確認ダイアログの挙動を確認するためだけにコードを書き、リビルドを繰り返すのは非効率な作業です。
特に、開発者以外のデザイナーや設計者が「実際の挙動を確認したい」と思っても、ソースコードしか公開されていないツールでは、ビルド環境の構築という高いハードルがありました。 そこで本ツールでは、誰もがすぐに動かせるよう実行形式での配布を行っています。 あえてサードパーティ製ライブラリを一切使わず、WPF 標準コントロールの Style 定義のみで構築したため、軽量で依存関係の少ないツールを実現できました。
設定できる項目
本ツールが呼び出す MessageBox.Show のオーバーロードの引数を、それぞれ独立した入力として公開しています。
そのため、コードを書き換えてリビルドすることなく組み合わせを試せます。
なお、第 1 引数に所有者となる Window を受け取るオーバーロードは対象外で、本ツールは所有者を設定しません。
| 項目 | 型 | 効果 |
|---|---|---|
| 本文 | string |
ダイアログの本文です。長文がどこで折り返され、ダイアログの幅がどう変わるかの確認に使えます。 |
| タイトル | string |
タイトルバーに表示される文字列です。 |
| ボタン | MessageBoxButton |
ボタンの組み合わせです。OK / OK・キャンセル / はい・いいえ / はい・いいえ・キャンセル から選べます。 |
| アイコン | MessageBoxImage |
本文の横に表示されるシステムアイコンです。列挙型の 9 つの値すべてを選択できます。 |
| 既定の結果 | MessageBoxResult |
ダイアログを開いた時点でフォーカスが当たるボタン、すなわち Enter キーで確定されるボタンです。 本ツールでは列挙型のすべての値を選べますが、指定が効くのは、選んだボタン構成にそのボタンが含まれている場合だけです。 表示されていないボタンを指定すると、代わりに先頭のボタンが既定になります。一度試してみると挙動がつかめます。 |
| オプション | MessageBoxOptions |
右寄せ表示や右から左への読み取り順序といった、表示に関するオプションです。 |
このツールで分かること:アイコン名は 9 つ、実際のアイコンは 4 種類
MessageBoxImage には 9 つのメンバーがあるため、9 種類のアイコンを選べるように見えます。
しかし実際にはそうではありません。
いくつかのメンバーは同じ数値を共有しており、実行時には区別できません。
列挙型が同一の Win32 フラグに対して別名を用意している、というのが実態です。
| 列挙型のメンバー | 値 | 実際に表示されるアイコン |
|---|---|---|
None |
0 | アイコンなし |
Error / Hand / Stop |
16 | 赤い円の中の白い × |
Question |
32 | 円の中の疑問符 |
Exclamation / Warning |
48 | 黄色い三角形の中の感嘆符 |
Asterisk / Information |
64 | 円の中の小文字の i |
Error・Hand・Stop を順に選び、毎回まったく同じダイアログが表示されるのを見れば、
列挙型の定義を読んでいるときに湧く疑問がその場で解消します。
同時に、この 3 つのどれを使うかはコードの読みやすさの問題であって、ユーザーに見える違いではないことも分かります。
もう 1 点、使う前に知っておく価値のある注意があります。
Microsoft は Question アイコンを非推奨としています。
疑問符はメッセージの種類を示しておらず、ヘルプ機能と誤解されうる、というのがその理由です。
現在も列挙型に残っているのは後方互換性のためです。
確認ダイアログには Warning を使うか、アイコンを付けないほうが無難です。
技術的な工夫:柔軟性と可搬性
1. ビルド不要ですぐ動かせる
開発者以外とツールを共有するには、ソースコードを提供するだけでは足りません。 実行ファイルを公開し続けることで、チームの誰もが最新の UI 仕様を自分のマシンで即座に確認できる状態を作りました。
2. 各プロパティを独立して設定できる
各コントロールは独立して設定できるように構成しています。 特定のボタンとアイコンの組み合わせや、本文の長さに応じた自動リサイズといった条件を、コード上のロジックを気にせず試せます。
3. XAML による見通しのよい UI 管理
レイアウトは XAML のみで定義し、デザインとロジックを分離しています。 標準コントロールを Style の定義だけでどこまで整えられるかという、実装サンプルとしても参照できます。
主な用途
- 仕様レビューでダイアログの文言を確定する。 口頭で説明する代わりに実物を表示し、その場で本文とボタン構成の合意を取れます。
- 長い本文の表示結果を確認する。 コード上では問題なく見える文章でも、表示すると不自然な位置で折り返されたり、ダイアログが横に伸びたりします。 実際の文字列を貼り付ければ結果がすぐ分かります。
- Enter キーでどのボタンが押されるかを確認する。 破壊的な操作の確認ダイアログで既定の結果を誤ると、そのまま使い勝手の不具合になります。 コードを書く前にフォーカス位置を確認できます。
- 右から左のレイアウトを検証する。 オプションで RTL の読み取り順序を指定できます。通常は確認しづらい表示です。
動作環境
- OS: Windows(x64)
- ランタイム: 配布している ZIP には、.NET 8 用と .NET 10 用の win-x64 ビルドが両方入っています。 いずれもフレームワーク依存の配置でランタイムを同梱していないため、 対応する x64 版の .NET デスクトップ ランタイムが別途必要です。 導入済みのバージョンに合わせて、どちらかの実行ファイルを選んでください。
- UI フレームワーク: WPF、サードパーティ製の依存関係なし
ダウンロードとリポジトリ
実行ファイルのダウンロードとソースコードの閲覧は GitHub から行えます。
🚀 ビルド済み exe をダウンロード(GitHub Releases)
GitHub リポジトリを見る(ソースコード)