Windowsアプリケーションを作成する際、エラーや警告についての情報をユーザに通知するためメッセージボックスを表示することがありますが、メッセージボックスを表示するメソッド MessageBox.Show には、引数をいくつも指定する必要があり、毎回同じ処理を書くのは少し面倒に思うことがあります。
本記事では、エラーや警告などのメッセージボックスを簡単に表示できる共通メソッドを作る方法を紹介します。
準備
フォームにボタンを3つ配置します。それぞれのボタンのイベントハンドラを生成するため、それぞれをダブルクリックしておきます。
サンプルコード
メッセージボックスを表示する共通クラス
共通クラスを記述するファイル Common.cs をプロジェクトに作成し、メッセージボックスを表示するメソッドを作成します。
using System.Windows.Forms;
namespace WindowsFormsApp1
{
class Common
{
// エラーメッセージ表示 ★
public static void ShowErrorMessage(string message)
{
MessageBox.Show(message,
Application.ProductName,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
// 警告メッセージを表示しユーザにYes/Noを選択させる ★
public static DialogResult ShowWarningMessage(string message)
{
return MessageBox.Show(message,
Application.ProductName,
MessageBoxButtons.YesNo,
MessageBoxIcon.Warning);
}
// 通常メッセージ表示 ★
public static void ShowMessage(string message)
{
MessageBox.Show(message,
Application.ProductName,
MessageBoxButtons.OK,
MessageBoxIcon.None);
}
}
}
ユーザ操作画面
ボタン1、2、3に、それぞれエラーメッセージ、警告メッセージ、通常メッセージを表示する処理を記述します。警告メッセージについては、ユーザにYes/Noを選択させ、選択に応じた処理を行います。
共通メソッドを定義しておくことにより、実際にメッセージを表示する処理において、記述する内容が少なくて済みます。
using System;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// エラーメッセージ表示
private void button1_Click(object sender, EventArgs e)
{
Common.ShowErrorMessage("エラーが発生しました");
}
// 警告メッセージ表示し、Yen/Noを選択させる
private void button2_Click(object sender, EventArgs e)
{
DialogResult result = Common.ShowWarningMessage("処理を続行しますか?");
if (result == DialogResult.Yes)
{
Common.ShowMessage("Yesが選択されました");
}
else
{
Common.ShowMessage("Noが選択されました");
}
}
// メッセージボックスによる情報表示のみ
private void button3_Click(object sender, EventArgs e)
{
Common.ShowMessage("ユーザへの情報です。");
}
}
}
メッセージボックスに表示するアプリケーション名の変更
メッセージボックスのタイトルに表示されるアプリケーション名を変更したいときは、プロジェクトのPropertiesのAssemblyInfo.cs内、属性AssemblyProductの内容を変更してください。
実行結果
ボタン1押下時
ボタン2押下時
ボタン3押下時
まとめ
本記事では、エラーや警告などのメッセージボックスを簡単に表示できる共通メソッドを作る方法を紹介しました。メッセージボックスに限らず、何度も同じ処理を記述する場合は、記述の間違いが発生する可能性が高まるため、メソッドを作成して処理を共通化することをお薦めします。