元SE。田舎の公務員

通勤快足な生活をしながら、開発技術とウェイトコントロールについてつらつらと。。。

【C#】MessageBoxメッセージボックスを表示する。複数のボタンとアイコンを表示

メッセージボックスの表示には、MessageBoxクラス(System.Windows.Forms名前空間)のShowメソッドを使用します。
エラーメッセージの表示や、ユーザーの確認が必要な場合に使用します。

前提

  • フォーム(Form1 )にボタン(button1)が配置されている。
  • button1をクリックした際にメッセージボックスが表示される。
  • Framework:Visualstudio .NET Framework
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //ここにMessageBox.Show("");を記述する
        }
    }
}

一つのボタンを表示する

メッセージと[OK]ボタンを表示

f:id:whitecal:20190104203354j:plain

MessageBox.Show("メッセージ");

または、

MessageBox.Show("メッセージ",,MessageBoxButtons.OK);

引数が指定されていない場合はMessageBoxButtons.OKは指定しなくてもよい。
何が表示されるのか、何を指定しているのかを明らかにするため、明示しておいたほうがソースの可読性は向上します。

メッセージとダイアログタイトル、[OK]ボタンを表示

f:id:whitecal:20190104204135j:plain

MessageBox.Show("メッセージ",メッセージバー表示テキスト);

または、

MessageBox.Show("メッセージ",メッセージバー表示テキスト,MessageBoxButtons.OK);

引数が指定されていない場合はMessageBoxButtons.OKは指定しなくてもよい。
何が表示されるのか、何を指定しているのかを明らかにするため、明示しておいたほうがソースの可読性は向上します。

複数のボタンを表示

[OK]と[キャンセル]ボタンを表示

f:id:whitecal:20190104223913j:plain

MessageBox.Show("メッセージ", "メッセージバー", MessageBoxButtons.OKCancel);

[はい]と[いいえ]ボタンを表示

f:id:whitecal:20190104223915j:plain

MessageBox.Show("メッセージ",メッセージバー,MessageBoxButtons.YesNo);

[再試行]と[キャンセル]ボタンを表示

f:id:whitecal:20190104223918j:plain

MessageBox.Show("メッセージ",メッセージバー,MessageBoxButtons.RetryCancel);

[はい]、[いいえ]、[キャンセル]ボタンを表示

f:id:whitecal:20190104223920j:plain

MessageBox.Show("メッセージ",メッセージバー,MessageBoxButtons.YesNoCancel);

[中止]、[再試行]、[無視]ボタンを表示

f:id:whitecal:20190104223922j:plain

MessageBox.Show("メッセージ",メッセージバー,MessageBoxButtons.AbortRetryIgnore);

複数のボタンのうち、いずれかのボタンをデフォルト選択状態にしたい

左から1つ目のボタンを選択状態にする

MessageBox.Show("メッセージ", "メッセージバー", MessageBoxButtons.YesNoCancel,MessageBoxIcon.None,MessageBoxDefaultButton.Button1);

左から2つ目のボタンを選択状態にする

MessageBox.Show("メッセージ", "メッセージバー", MessageBoxButtons.YesNoCancel,MessageBoxIcon.None,MessageBoxDefaultButton.Button2);

左から3つ目のボタンを選択状態にする

MessageBox.Show("メッセージ", "メッセージバー", MessageBoxButtons.YesNoCancel,MessageBoxIcon.None,MessageBoxDefaultButton.Button3);

メッセージボックスにアイコンを表示

表示しない

MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.None);

INFORMTIONを示すiマーク

f:id:whitecal:20190104231408j:plain

MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Information);
//または
MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);

Warning 確認やユーザへの質問を示す?マーク

f:id:whitecal:20190104231353j:plain

MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Question);

Question(?マーク)の使用に注意

疑問符(?)は、質問の特定の種類を明確に表さず、メッセージの言い回しはどのメッセージであっても適用されてしまいます。そのため、疑問符(?)のメッセージアイコンの使用は推奨されなくなりました。
メッセージを見るユーザは、疑問符(?)アイコンをヘルプ情報と混同することがあります。したがって、メッセージボックスには疑問符(?)アイコンの使用は控えてください。

Warning 注意を示す!マーク

f:id:whitecal:20190104231338j:plain

MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Warning);
//または
MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);

ERROR エラーや停止を示す☓マーク

f:id:whitecal:20190104231306j:plain

MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Error);
//または
MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Stop);
//または
MessageBox.Show("メッセージ","タイトル",MessageBoxButtons.OK,MessageBoxIcon.Hand);

複数ボタンを表示したとき、どのボタンが選ばれたか判定

メッセージボックスのボタンのうち、いずれかがクリックされたか判定するために、DialogResult型の変数にクリック結果を代入させます。

DialogResult dRet =  MessageBox.Show("メッセージ", "メッセージバー", MessageBoxButtons.YesNoCancel);

クリックされたボタンを判定するためには、DialogResult型変数に格納された戻り値を比較することで判定します。
判定の際は、DialogResultクラスに格納された値を明示することで、ソースの可読性が向上します。

//中止ボタンがクリックされた場合
if (dRet == DialogResult.Abort)
{
}

//キャンセルボタンがクリックされた場合
if (dRet == DialogResult.Cancel)
{
}

//無視ボタンがクリックされた場合
if (dRet == DialogResult.Ignore)
{
}

//いいえボタンがクリックされた場合
if (dRet == DialogResult.No)
{
}

//OKボタンがクリックされた場合
if (dRet == DialogResult.OK)
{
}

//再試行ボタンがクリックされた場合
if (dRet == DialogResult.Retry)
{
}

//はいボタンがクリックされた場合
if (dRet == DialogResult.Yes)
{
}

メッセージボックスのメッセージを改行

f:id:whitecal:20190104234400j:plain
”メッセージ” + Environment.NewLine + "2行目"”メッセージ\r\n2行目"といった改行が行えます。

MessageBox.Show("C#(.Net)でメッセージボックスを表示する。" + Environment.NewLine + "いろいろな表示方法があります。", "タイトル", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("C#(.Net)でメッセージボックスを表示する。\r\nいろいろな表示方法があります。", "タイトル", MessageBoxButtons.OK, MessageBoxIcon.Information);