メッセージボックスを表示するには、MessageBoxクラス(System.Windows.Forms名前空間)のShowメソッドを使用します。メッセージボックスは、エラーメッセージを表示したり、ユーザーに確認を求める時などに便利です。
補足:VB.NETではメッセージボックスを表示させるためにMsgBox関数を使うこともできますが、ここではその使い方を説明しません。
'メッセージボックスを表示する 'Yes,Noボタンと!アイコン MsgBox("ここに説明を書く。", _ MsgBoxStyle.YesNo Or MsgBoxStyle.Exclamation, _ "タイトル")
メッセージボックスはモーダルとして表示されますので、基本的には、メッセージボックスを閉じるまでアプリケーションに対して他の操作ができなくなります。
例えば、メッセージボックスを使ってユーザーに注意を促すには、次のようにします。
'Imports System.Windows.Forms
'メッセージボックスを表示する
MessageBox.Show("正しい値を入力してください。", _
"エラー", _
MessageBoxButtons.OK, _
MessageBoxIcon.Error)
//using System.Windows.Forms;
//メッセージボックスを表示する
MessageBox.Show("正しい値を入力してください。",
"エラー",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
例えば、メッセージボックスを使ってユーザーに質問をするには次のようにします。ここでは、「はい」「いいえ」「キャンセル」の3つの中から1つを選んでもらうようにしています。さらに、デフォルトのボタン(始めにフォーカスのあるボタン)を2番目のボタンである「いいえ」にしています。
'メッセージボックスを表示する Dim result As DialogResult = MessageBox.Show("ファイルを上書きしますか?", _ "質問", _ MessageBoxButtons.YesNoCancel, _ MessageBoxIcon.Exclamation, _ MessageBoxDefaultButton.Button2) '何が選択されたか調べる If result = DialogResult.Yes Then '「はい」が選択された時 Console.WriteLine("「はい」が選択されました") ElseIf result = DialogResult.No Then '「いいえ」が選択された時 Console.WriteLine("「いいえ」が選択されました") ElseIf result = DialogResult.Cancel Then '「キャンセル」が選択された時 Console.WriteLine("「キャンセル」が選択されました") End If
//メッセージボックスを表示する DialogResult result = MessageBox.Show("ファイルを上書きしますか?", "質問", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2); //何が選択されたか調べる if (result == DialogResult.Yes) { //「はい」が選択された時 Console.WriteLine("「はい」が選択されました"); } else if (result == DialogResult.No) { //「いいえ」が選択された時 Console.WriteLine("「いいえ」が選択されました"); } else if (result == DialogResult.Cancel) { //「キャンセル」が選択された時 Console.WriteLine("「キャンセル」が選択されました"); }
以下、メッセージボックスに表示できるボタンとアイコンの種類について補足します。
メッセージボックスに表示するボタンは、MessageBoxButtons列挙体で指定します。以下にMessageBoxButtons列挙体のメンバと、そのメンバを指定したときに表示されるボタンについて説明します。
MessageBoxButtons列挙体のメンバ名 | 説明 | 画像 |
---|---|---|
OK | 「OK」ボタンのみ。 | |
OKCancel | 「OK」と「キャンセル」ボタン。 | |
AbortRetryIgnore | 「中止」、「再試行」、「無視」ボタン。メッセージボックスの閉じるボタンが無効。 | |
YesNoCancel | 「はい」、「いいえ」、「キャンセル」ボタン。 | |
YesNo | 「はい」と「いいえ」ボタン。メッセージボックスの閉じるボタンが無効。 | |
RetryCancel | 「再試行」と「キャンセル」ボタン。 |
ユーザーがどのボタンを押したかは、Showメソッドが返すDialogResultの値で分かります。メッセージボックスの閉じるボタン(Xボタン)が押された時は、基本的にはキャンセルボタンが押されたことになりますが、「OK」ボタンのみのとき(MessageBoxButtons.OKのとき)は、OKボタンが押されたことになります。
MessageBoxDefaultButton列挙体を指定すれば、メッセージボックスを表示したときにフォーカスのあるボタンを変更することもできます。
これらの使用例はすでに紹介しましたので、ここでは省略します。
メッセージボックスにアイコンを表示することができます。表示できるアイコンは4種類あり、MessageBoxIcon列挙体で指定します。
以下に、MessageBoxIcon列挙体のメンバとその意味を紹介します。
MessageBoxIcon列挙体のメンバ名 | 説明 | 画像 |
---|---|---|
None | アイコンなし。メッセージボックスを表示するときに一般の警告音が鳴る。 | |
Hand | 赤丸に白いX(停止マーク)。メッセージボックスを表示するときにシステムエラーの音が鳴る。エラーメッセージを表示するときなどに使用する。 | |
Question | 丸い吹き出しに疑問符記号。メッセージボックスを表示するときに「メッセージ(問い合わせ)」の音が鳴る。現在はこのアイコンの使用が推奨されておらず、下位互換性を維持するためにのみサポートされている。 | |
Exclamation | 黄色い三角に感嘆符記号。メッセージボックスを表示するときに「メッセージ(警告)」の音が鳴る。ユーザーに確認をするときなどに使用する。 | |
Asterisk | 丸い吹き出しに「i」。メッセージボックスを表示するときに「メッセージ(情報)」の音が鳴る。ユーザーに情報を表示するときなどに使用する。 | |
Stop | Handと同じ。 | |
Error | Handと同じ。 | |
Warning | Exclamationと同じ。 | |
Information | Asteriskと同じ。 |
メッセージボックスのオーナーウィンドウを、Showメソッドの1番目のパラメータに指定することができます。もしこれを指定しなかったならば、アクティブなウィンドウをオーナーとするようです。
例えば、自分自身をオーナーとしてメッセージボックスを表示するならば、次のようにします。
'自分自身をオーナーとしてメッセージボックスを表示する MessageBox.Show(Me, "テストです。")
//自分自身をオーナーとしてメッセージボックスを表示する MessageBox.Show(this, "テストです。");
メッセージボックスのタイトルとメッセージを右揃えにすることもできます。それには、MessageBoxOptions列挙体のRightAlignを指定します。
'文字を右揃えにしてメッセージボックスを表示する Dim result As DialogResult = MessageBox.Show("ファイルを上書きしますか?", _ "質問", _ MessageBoxButtons.YesNoCancel, _ MessageBoxIcon.Exclamation, _ MessageBoxDefaultButton.Button2, _ MessageBoxOptions.RightAlign)
//文字を右揃えにしてメッセージボックスを表示する
DialogResult result = MessageBox.Show("ファイルを上書きしますか?",
"質問",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button2,
MessageBoxOptions.RightAlign);
MessageBoxOptions列挙体のServiceNotificationを指定してShowメソッドを呼び出すと、メッセージボックスが現在アクティブなデスクトップに表示されます。この時、メッセージボックスはvisualスタイルを使用しません。このオプションは通常、サービスからメッセージボックスを表示するときに使用します。
ServiceNotificationに似たオプションにDefaultDesktopOnlyがあります。ServiceNotificationではログインしているユーザーがいない場合でもメッセージボックスが表示されますが、DefaultDesktopOnlyでは既定のデスクトップ(ユーザーがログオンした後でアプリケーションが動作するデスクトップ)でのみ表示されます。
これらのオプションは、Windows NT系のOSでのみ有効です。
'文字を右揃えにしてメッセージボックスを表示する Dim result As DialogResult = MessageBox.Show("ファイルを上書きしますか?", _ "質問", _ MessageBoxButtons.YesNoCancel, _ MessageBoxIcon.Exclamation, _ MessageBoxDefaultButton.Button2, _ MessageBoxOptions.ServiceNotification)
//文字を右揃えにしてメッセージボックスを表示する
DialogResult result = MessageBox.Show("ファイルを上書きしますか?",
"質問",
MessageBoxButtons.YesNoCancel,
MessageBoxIcon.Exclamation,
MessageBoxDefaultButton.Button2,
MessageBoxOptions.ServiceNotification);