.NETにはメッセージを表示するダイアログボックスを表示するためのクラスが用意されています。
メッセージボックスを使用すると、ユーザーにアプリケーションの例外や、システムのエラーを通知したり、有益な情報を提示したり、ユーザーが行った操作に対する警告を表示したり、「はい or いいえ」や「OK or キャンセル」などで応答する質問形式のメッセージを表示して、ユーザーと対話したりすることができます。
今回はC#のWindowsフォームアプリケーションで、メッセージボックスを表示する方法を紹介します。
本記事ではVisual Studioで作成した、Windowsフォームアプリケーションのプロジェクトに記述するコードを記載します。
Windowsフォームアプリケーションのプロジェクトを作成する方法については、以下の記事を参照してください。
メッセージボックスを表示する
.NET FrameworkのWindowsフォームでメッセージボックスを表示するには、System.Windows.Forms名前空間にあるMessageBoxクラスを使用します。
MessageBoxクラスにはメッセージボックスを表示するShowメソッドが用意されています。
メッセージテキストのみを指定して表示
1番シンプルなメッセージボックスはShowメソッドのパラメーター(引数)にメッセージ(string: 文字列)のみを指定した形式になります。
1 2 |
// メッセージボックスを表示する MessageBox.Show("メッセージテキストのみ"); |
メッセージとタイトルを指定して表示
Showメソッドのパラメーターにメッセージ(string: 文字列)とタイトル(string: 文字列)を指定すると、タイトルバーにキャプション(見出し)が表示されます。
1 2 |
// メッセージボックスを表示する MessageBox.Show("タイトルを表示したメッセージです。", "キャプション"); |
表示するボタンを指定して表示
ボタンを表示する場合はShowメソッドのパラメーターに表示するボタンの種類を指定します。
Showメソッドのパラメーターに指定するボタンの種類には、System.Windows.Forms名前空間にあるMessageBoxButtons列挙型を指定します。
1 2 3 4 5 |
// メッセージボックスを表示する MessageBox.Show( "YesとNoのボタンを表示します。", "JOHOBASE", MessageBoxButtons.YesNo); |
MessageBoxButtons列挙型
MessageBoxButtons列挙型には、次のメンバー(フィールド)が用意されています。
フィールド | 値 | 説明 |
---|---|---|
OK | 0 | メッセージボックスに「OK」ボタンを表示します。 |
OKCancel | 1 | メッセージボックスに「OK」ボタンと「キャンセル」ボタンを表示します。 |
AbortRetryIgnore | 2 | メッセージボックスに「中止」、「再試行」、および「無視」の各ボタンを表示します。 |
YesNoCancel | 3 | メッセージボックスに「はい」、「いいえ」、および「キャンセル」の各ボタンを表示します。 |
YesNo | 4 | メッセージボックスに「はい」ボタンと「いいえ」ボタンを表示します。 |
RetryCancel | 5 | メッセージボックスに「再試行」ボタンと「キャンセル」ボタンを表示します。 |
表示するボタンとアイコンを指定して表示
アイコンを表示する場合はShowメソッドのパラメーターに表示するアイコンの種類を指定します。
Showメソッドのパラメーターに指定するアイコンの種類には、System.Windows.Forms名前空間にあるMessageBoxIcon列挙型を指定します。
1 2 3 4 5 6 |
// メッセージボックスを表示する MessageBox.Show( "OKですか、キャンセルですか?", "JOHOBASE", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); |
MessageBoxIcon列挙型
MessageBoxIcon列挙型には、次のメンバー(フィールド)が用意されています。
フィールド | 値 | 説明 |
---|---|---|
None | 0 | なし |
Error Hand Stop |
16 | 背景色が赤の円で囲まれたバツ(×)のアイコンが表示されます。 |
Question | 32 | 背景色が白または青の円で囲まれた小文字の疑問符(?)のアイコンが表示されます。 |
Warning Exclamation |
48 | 背景色が黄色の三角で囲まれた感嘆符(!)のアイコンが表示されます。 メッセージボックスには、背景が黄色い三角で囲んだ感嘆符から成るシンボルが含まれます。 |
Information Asterisk |
64 | 背景色が白または青の円で囲まれた小文字のiのアイコンが表示されます。 |
Microsoftのドキュメントのメッセージボックスアイコンのページには次の記載があります。
疑問符は、質問の特定の種類を明確に表さず、メッセージの言い回しはどのメッセージの種類にも適用されるため、疑問符のメッセージ アイコンは推奨されなくなりました。さらにユーザーは、疑問符シンボルをヘルプ情報シンボルと混同することがあります。したがって、メッセージボックスには疑問符シンボルを使用しないでください。システムは引き続き、下位互換性のためだけに、その組み込みをサポートします。
疑問符の「Question」は非推奨になっているようです。
以下にそれぞれのアイコンを指定した場合に表示されるアイコンを示します。
既定のボタンを指定して表示
既定のボタン(初期選択されるボタン)を設定する場合は、Showメソッドのパラメーターに既定のボタンの種類を指定します。
Showメソッドのパラメーターに指定する既定のボタンの種類には、System.Windows.Forms名前空間にあるMessageBoxDefaultButton列挙型を指定します。
1 2 3 4 5 6 7 |
// メッセージボックスを表示する MessageBox.Show( "○△□ができません\r\nどのように処理しますか?", "JOHOBASE", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2); |
上記の例では2番目のボタン(「再試行」ボタン)を既定のボタンとして選択しています。
MessageBoxDefaultButton列挙型
MessageBoxDefaultButton列挙型には、次のメンバー(フィールド)が用意されています。
フィールド | 値 | 説明 |
---|---|---|
Button1 | 0 | メッセージボックスの1番目のボタンが既定のボタンになります。 |
Button2 | 256 | メッセージボックスの2番目のボタンが既定のボタンになります。 |
Button3 | 512 | メッセージボックスの3番目のボタンが既定のボタンになります。 |
メッセージボックスの戻り値を取得
メッセージボックスのボタンに「OKCancel」や「YesNoCancel」などの複数のボタンを指定すると、ユーザーが選択した(クリックした)ボタンの形式を戻り値として取得して処理を分岐することができます。
Showメソッドは戻り値にSystem.Windows.Forms名前空間のDialogResult列挙型を返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// メッセージボックスを表示する DialogResult dialogResult = MessageBox.Show( "この記事は、お役に立ちましたか?", "JOHOBASE", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1); if (dialogResult == DialogResult.Yes) { MessageBox.Show("ありがとうございます。\r\nお役に立てて何よりです。"); } else { MessageBox.Show("申し訳ございません。\r\nもっと精進いたします。"); } |
DialogResult列挙型
DialogResult列挙型には、次のメンバー(フィールド)が用意されています。
名前 | 値 | 説明 |
---|---|---|
None | 0 | メッセージボックスの結果がなし(Nothing)であることを示します。 |
OK | 1 | メッセージボックスの結果が「OK」であることを示します。 |
Cancel | 2 | メッセージボックスの結果が「キャンセル」であることを示します。 |
Abort | 3 | メッセージボックスの結果が「中止」であることを示します。 |
Retry | 4 | メッセージボックスの結果が「再試行」であることを示します。 |
Ignore | 5 | メッセージボックスの結果が「無視」であることを示します。 |
Yes | 6 | メッセージボックスの結果が「はい」であることを示します。 |
No | 7 | メッセージボックスの結果が「いいえ」であることを示します。 |
オーナーウィンドウを指定
MessageBoxクラスのShowメソッドでは、1番目のパラメーター(引数)にメッセージボックスを所有するオーナーウィンドウを指定することができます。
オーナーウィンドウにはSystem.Windows.Forms名前空間のIWin32Windowインターフェースの実装(Formクラスなど)を指定します。
1 2 3 4 5 6 7 |
// メッセージボックスを表示する MessageBox.Show( this, "オーナーウィンドウを指定", "JOHOBASE", MessageBoxButtons.OK, MessageBoxIcon.Information); |
上記の例では自分自身のthis(フォームオブジェクト)を指定しています。
オーナーウィンドウを指定すると、指定したオーナーウィンドウの前にメッセージボックスが表示されます。
オーナーウィンドウを指定しない場合は、アクティブなウィンドウがオーナーとなります。
オーナーウィンドウに指定されたウィンドウは、メッセージボックスが表示される際に前面に移動して表示されます。
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 |
using System; using System.Windows.Forms; namespace WindowsFormsApp1 { public partial class StartupForm : Form { // コンストラクタ public StartupForm() { InitializeComponent(); } // フィールド変数 Form1 _form1 = new Form1(); Form2 _form2 = new Form2(); // OnLoadのオーバーライド protected override void OnLoad(EventArgs e) { base.OnLoad(e); // Form1とForm2を表示 _form1.Show(); _form2.Show(); } // ボタンクリックのイベントでForm1とForm2を // オーナーウィンドウに指定してメッセージボックスを表示 private void button1_Click(object sender, EventArgs e) { MessageBox.Show(_form1, "Form1をオーナーに指定して表示"); MessageBox.Show(_form2, "Form2をオーナーに指定して表示"); } } } |
上記の例では、起動フォーム(StartupForm)からForm1とForm2を表示し、ボタンクリックのイベントでそれぞれのフォームをオーナーウィンドウに指定して、メッセージボックスを表示しています。
StartupFormのボタン(button1)をクリックしてメッセージボックスを表示します。
Form1をオーナーウィンドウに指定している場合は、Form1が最前面に表示されます。
Form2をオーナーウィンドウに指定している場合は、Form2が最前面に表示されます。
メッセージボックスのオプション
メッセージボックスを表示するShowメソッドのパラメーター(引数)には、メッセージボックスのオプションを指定することができます。
メッセージボックスのオプションには、System.Windows.Forms名前空間にあるMessageBoxOptions列挙型を指定します。
MessageBoxOptions列挙型
フィールド | 値 | 説明 |
---|---|---|
RightAlign | 524288 | メッセージボックスのテキストを右揃えで表示します。 |
RtlReading | 1048576 | メッセージボックスのテキストを右から左へ読むように指定します。 |
DefaultDesktopOnly | 131072 | メッセージボックスをアクティブデスクトップに表示します。この定数はServiceNotificationに似ていますが、メッセージボックスが対話型のウィンドウステーションの既定のデスクトップでしか表示されない点が異なります。メッセージボックスを表示したアプリケーションがフォーカスを失い、視覚スタイル(Visualスタイル)を使用せずにメッセージボックスが表示されます。 |
ServiceNotification | 2097152 | メッセージボックスをアクティブデスクトップに表示します。呼び出し元は、ユーザーにイベントを通知するサービスです。Showによって、コンピューターにログオンしているユーザーがいない場合でも、現在アクティブなデスクトップにメッセージボックスが表示されます。 |
メッセージを右揃えにする
メッセージボックスのオプションにMessageBoxOptions.RightAlignを指定すると、メッセージが右揃えになります。
1 2 3 4 5 6 7 8 9 |
// メッセージを右揃えにしてメッセージボックスを表示する MessageBox.Show( this, "文字を右に揃えて表示", "JOHOBASE", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign); |
キャプションとアイコンを右揃えにする
メッセージボックスのオプションにMessageBoxOptions.RtlReadingを指定すると、キャプション(タイトル)とアイコンが右揃えになります。
1 2 3 4 5 6 7 8 9 |
// キャプションとアイコンを右揃えにしてメッセージボックスを表示する MessageBox.Show( this, "キャプションとアイコンを右に揃えて表示", "JOHOBASE", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2, MessageBoxOptions.RtlReading); |
アクティブデスクトップに表示する
メッセージボックスをアクティブデスクトップに表示する場合には、メッセージボックスのオプションにMessageBoxOptions.DefaultDesktopOnlyを指定します。
1 2 3 4 5 6 7 8 9 |
// アクティブデスクトップにメッセージボックスを表示する MessageBox.Show( "アクティブデスクトップに表示", "JOHOBASE", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2, MessageBoxOptions.DefaultDesktopOnly); // オプションにMessageBoxOptions.DefaultDesktopOnlyを指定する場合はオーナーウィンドウは指定できない |
サービスから表示する
メッセージボックスをサービスから表示する場合には、メッセージボックスのオプションにMessageBoxOptions.ServiceNotificationを指定します。
1 2 3 4 5 6 7 8 9 |
// サービスからメッセージボックスを表示する MessageBox.Show( "サービスから表示", "JOHOBASE", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2, MessageBoxOptions.ServiceNotification); // オプションにMessageBoxOptions.ServiceNotificationを指定する場合はオーナーウィンドウは指定できない |
Showメソッドの構文(オーバーロード)
Showメソッドの構文には21種類のオーバーロードが用意されています。
構文1
1 2 3 |
MessageBox.Show ( String text ); |
指定したテキストを表示するメッセージボックスを表示します。
構文2
1 2 3 4 |
MessageBox.Show ( String text, String ); |
指定したテキストとキャプションを表示するメッセージボックスを表示します。
構文3
1 2 3 4 5 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons ); |
指定したテキスト、キャプション、およびボタンを表示するメッセージボックスを表示します。
構文4
1 2 3 4 5 6 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon ); |
指定したテキスト、キャプション、ボタン、およびアイコンを表示するメッセージボックスを表示します。
構文5
1 2 3 4 5 6 7 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton ); |
指定したテキスト、キャプション、ボタン、アイコン、および既定のボタンを表示するメッセージボックスを表示します。
構文6
1 2 3 4 5 6 7 8 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、およびオプションを表示するメッセージボックスを表示します。
構文7
1 2 3 4 5 6 7 8 9 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, Boolean displayHelpButton ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文8
1 2 3 4 5 6 7 8 9 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイルを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文9
1 2 3 4 5 6 7 8 9 10 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath, String keyword ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイルとヘルプキーワードを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文10
1 2 3 4 5 6 7 8 9 10 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath, HelpNavigator navigator ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイルとHelpNavigatorを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文11
1 2 3 4 5 6 7 8 9 10 11 |
MessageBox.Show ( String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath, HelpNavigator navigator, Object param ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイル、HelpNavigator、およびヘルプ トピックを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文12
1 2 3 4 |
MessageBox.Show ( IWin32Window owner,, String text ); |
指定したオブジェクトの前に、指定したテキストを表示するメッセージボックスを表示します。
構文13
1 2 3 4 5 |
MessageBox.Show ( IWin32Window owner,, String text, String ); |
指定したオブジェクトの前に、指定したテキストとキャプションを表示するメッセージボックスを表示します。
構文14
1 2 3 4 5 6 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons ); |
指定したオブジェクトの前に、指定したテキスト、キャプション、およびボタンを表示するメッセージボックスを表示します。
構文15
1 2 3 4 5 6 7 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon ); |
指定したオブジェクトの前に、指定したテキスト、キャプション、ボタン、およびアイコンを表示するメッセージボックスを表示します。
構文16
1 2 3 4 5 6 7 8 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton ); |
指定したオブジェクトの前に、指定したテキスト、キャプション、ボタン、アイコン、および既定のボタンを表示するメッセージボックスを表示します。
構文17
1 2 3 4 5 6 7 8 9 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options ); |
指定したオブジェクトの前に、指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、およびオプションを表示するメッセージボックスを表示します。
構文18
1 2 3 4 5 6 7 8 9 10 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイルを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文19
1 2 3 4 5 6 7 8 9 10 11 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath, String keyword ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイルとヘルプキーワードを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文20
1 2 3 4 5 6 7 8 9 10 11 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath, HelpNavigator navigator ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイルとHelpNavigatorを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。
構文21
1 2 3 4 5 6 7 8 9 10 11 12 |
MessageBox.Show ( IWin32Window owner,, String text, String, MessageBoxButtons buttons, MessageBoxIcon icon, MessageBoxDefaultButton defaultButton, MessageBoxOptions options, String helpFilePath, HelpNavigator navigator, Object param ); |
指定したテキスト、キャプション、ボタン、アイコン、既定のボタン、オプション、および指定したヘルプファイル、HelpNavigator、およびヘルプトピックを使用する「ヘルプ」ボタンを表示するメッセージボックスを表示します。