プログラミングを試してみたい人向けのC#プログラミングチュートリアル

メッセージボックスを表示する

POINT
  • MessageBoxクラスのShowメソッドでメッセージを表示できる
  • MessageBoxのボタンやアイコンは引数で指定できる
目次

Windowsフォームアプリのメッセージ表示

コンソールアプリでは、System.Console.WriteLine("メッセージ内容");で任意のメッセージを簡単に表示できました。
Windowsフォームアプリの場合は、画面上のラベルなどのコントロールに文言を表示するか、メッセージ用のダイアログを表示する必要があります。
C#では、MessageBoxクラスのShowメソッドを呼び出すことで簡単にメッセージ用のダイアログを表示できます。

メッセージボックスを表示するサンプルプログラム

次のようなサンプルプログラムを紹介します。
①起動するとボタンが配置された画面を表示
②ボタンをクリックするとメッセージボックスを表示
③メッセージボックス上のボタンをクリックすると、クリックしたボタンの内容をメッセージで表示

実行結果サンプル

プログラムを実行すると次の画面を表示します。

プログラム実行時の画面

「Click!」のボタンをクリックすると、メッセージボックスを表示します。

メッセージボックスを表示

メッセージボックスのボタンをクリックすると、クリックしたボタンの内容をメッセージ表示します。

クリックしたボタンの内容を表示

プログラム作成

ではプログラムを作成してみましょう。
次のファイルを同じフォルダに作成してください。

Program.cs
using System;
using System.Windows.Forms;

namespace SampleProgram 
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}
Form1.cs
using System;
using System.Windows.Forms;

namespace SampleProgram 
{
    public class Form1 : Form
    {
        private Button button1;

        // コンストラクタ
        public Form1()
        {
            this.SuspendLayout();

            // ボタン作成
            this.button1 = new Button();
            this.button1.Text = "Click!";
            this.button1.Location = new System.Drawing.Point(40, 80);
            this.button1.Height = 60;
            this.button1.Width = 200;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            
            // コントロールを貼付
            this.Controls.Add(this.button1);
            
            this.ResumeLayout(false);
            this.PerformLayout();
        }
        
        // ボタンクリック時の処理
        private void button1_Click(object sender, EventArgs e)
        {
            // メッセージボックスを表示
            DialogResult result = MessageBox.Show("表示メッセージ",
                "タイトル",
                MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button1);
                
            // 結果を表示
            if (result == DialogResult.Yes)
            {
                MessageBox.Show("はい");
            }
            else if (result == DialogResult.No)
            {
                MessageBox.Show("いいえ");
            }
            else if (result == DialogResult.Cancel)
            {
                MessageBox.Show("キャンセル");
            }
        }

    }
}
Compile.bat
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe ^
  /t:winexe ^
  *.cs
pause

ファイルを作成できたらCompile.batを実行してみましょう。
同じフォルダにProgram.exeが作成されます。
Program.exeを実行して実行結果サンプルのように動いたら成功です。

プログラム解説

作成したプログラムを解説していきます。

メッセージボックスの表示

メッセージボックスはMessageBoxのShowメソッドを呼び出すことで表示できます。
最も簡単な表示はメッセージのみ指定した表示です。
MessageBox.Show(メッセージの内容);と記載することで表示できます。

Form1.cs(抜粋)
                MessageBox.Show("はい");

引数を増やしていくことで、表示内容を変えることができます。

Form1.cs(抜粋)
            // メッセージボックスを表示
            DialogResult result = MessageBox.Show("表示メッセージ",
                "タイトル",
                MessageBoxButtons.YesNoCancel,
                MessageBoxIcon.Question,
                MessageBoxDefaultButton.Button1);

引数の内容は次のようになります。
・第1引数:表示するメッセージ
・第2引数:メッセージボックスの画面タイトルに表示する文字列
・第3引数:どんなボタンを表示するかをMessageBoxButtons(後で説明)で指定
・第4引数:どんなアイコンを表示するかをMessageBoxIcon(後で説明)で指定
・第5引数:最初に表示したときにどのボタンをアクティブにするかをMessageBoxDefaultButton.Button1~の連番で指定、左から何番目のボタンにするかを指定

表示するボタン指定(MessageBoxButtons)

メッセージボックスに表示するボタンはMessageBoxButtons.○○の形式で指定します。
なお、このように型名.○○と指定できる決まった値のことを列挙型を言います。
指定できる内容は次のようになります。

MessageBoxButtons列挙型 表示するボタン
MessageBoxButtons.OK [OK]ボタン
MessageBoxButtons.OKCancel [OK]と[キャンセル]ボタン
MessageBoxButtons.AbortRetryIgnore [中止]と[再試行]と[無視]ボタン
MessageBoxButtons.YesNoCancel [はい]と[いいえ]と[キャンセル]ボタン
MessageBoxButtons.YesNo [はい]と[いいえ]ボタン
MessageBoxButtons.RetryCancel [再試行]と[キャンセル]ボタン

アイコン表示指定(MessageBoxIcon)

メッセージボックスに表示するアイコンはMessageBoxIcon.○○の形式で指定します。
指定できる内容は次のようになります。
HandとErrorとStop、WarningとExclamation、AsteriskとInformationは同じ内容を表示します。

MessageBoxIcon列挙型 表示するアイコン
MessageBoxIcon.None MessageBoxIcon.Noneを表示
MessageBoxIcon.Hand MessageBoxIcon.Handを表示
MessageBoxIcon.Error MessageBoxIcon.Errorを表示
MessageBoxIcon.Stop MessageBoxIcon.Stopを表示
MessageBoxIcon.Question MessageBoxIcon.Questionを表示
MessageBoxIcon.Warning MessageBoxIcon.Warningを表示
MessageBoxIcon.Exclamation MessageBoxIcon.Exclamationを表示
MessageBoxIcon.Asterisk MessageBoxIcon.Asteriskを表示
MessageBoxIcon.Information MessageBoxIcon.Informationを表示

戻り値(DialogResult)

戻り値はDialogResult型で、何のボタンが押されたかが返ってきます。
DialogResultも列挙型で、内容は次のようになります。

DialogResult列挙型 押されたボタン
DialogResult.None 戻り値設定なし、DialogResult型に対するnulのような意味
DialogResult.OK [OK]ボタン
DialogResult.Cancel [キャンセル]ボタン
DialogResult.Abort [中止]ボタン
DialogResult.Retry [再試行]ボタン
DialogResult.Ignore [無視]ボタン
DialogResult.Yes [はい]ボタン
DialogResult.No [いいえ]ボタン