WisdomSoft - for your serial experiences.

1.5 .NET アプリケーション開発

メッセージボックスを表示するだけの簡単な Windows アプリケーションを作成します。

1.5.1 コンパイルする

開発環境の準備が整えば、さっそくソースコードを記述して .NET Framework アプリケーションを開発しましょう。本格的に Windows アプリケーションを開発する前に、この場で C# 言語のソースコードを記述し、正しくコンパイルできるかどうかを確認してください。

コード1
using System.Windows.Forms;

public class Test
{
	static void Main() 
	{
		MessageBox.Show("Kitty on your lap");
	}
}
実行結果
コード1 実行結果

コード1は、図のようなメッセージボックスを表示するだけの単純なプログラムです。メッセージボックスの OK ボタンが押されると、プログラムは終了します。Visual Studio などの総合開発環境を使っている場合は GUI からソリューションのビルドを行うだけで実行ファイルを生成することができます。

コマンドラインツールのみで開発する場合、このプログラムを Test.cs ファイルに記述し次のようにコンパイルしてください。

>csc Test.cs

コンパイルが成功すれば Test.exe というファイルが生成されるでしょう。ただし、Test.exe を実行するとコマンドプロンプトも同時に起動してしまいます。コマンドプロンプトを起動せずに、純粋な GUI アプリケーションとしてコンパイルしたい場合は、/target:winexe オプションを指定します。

>csc /target:winexe Test.cs

これで、純粋な GUI アプリケーションを作ることができます。

1.5.2 メッセージボックス

コード1で表示しているメッセージボックスは System.Windows.Forms.MessageBox クラスの機能です。メッセージボックスはウィンドウとは異なり単純なテキストメッセージを表示する単純なダイアログです。ウィンドウにテキストを表示するには様々な描画手続きが必要になりますが、メッセージボックスを使えば簡単にテキストを GUI に表示させることができます。ユーザーにメッセージを表示する目的の他に、変数の内容を確認するなどの簡単なデバッグでも使うことができます。

System.Windows.Forms.MessageBox クラス
System.Object
    System.Windows.Forms.MessageBox
public class MessageBox

MessageBox クラスは、コンストラクタからインスタンスを生成するのではなく、静的な Show() メソッドを呼び出してメッセージボックスを表示します。Show() メソッドは数多くオーバーロードされていますが、基本はメッセージの表示です。

MessageBox クラス Show() メソッド
public static DialogResult Show(string text);
public static DialogResult Show(string text, string caption);

text にはメッセージボックスに表示する文字列を、caption にはメッセージボックスのタイトルバーに表示する文字列を指定します。このメソッドの戻り値はダイアログの結果を返す値です。OK ボタンしかない場合は、特に戻り値を調べる必要はありません。

コード2
using System.Windows.Forms;

public class Test
{
	static void Main() 
	{
		MessageBox.Show(
			"ダメだスネーク!未来が変わってしまった\n" +
			"タイムパラドックスだ!", "エラー"
		);
	}
}
実行結果
コード2 実行結果

コード2は、メッセージボックスに表示するテキストに加えてタイトルバーに表示するテキストを指定しています。

1.5.3 選択ボタン

通常は OK ボタンのみが表示されますが、ユーザーの許可を求める場合に「はい」と「いいえ」ボタンを表示したい場合など、OK ボタン以外を表示させたい場合はさらにオーバーロードされている Show() メソッドを呼び出します。

MessageBox クラス Show() メソッド
public static DialogResult Show(string text, string caption, MessageBoxButtons buttons);

buttons には、メッセージボックスに表示するボタンを指定します。ボタンは System.Windows.Forms.MessageBoxButtons 列挙型のメンバのいずれかから指定します。

System.Windows.Forms.MessageBoxButtons 列挙型
[Serializable]
public enum MessageBoxButtons

OK ならば「OK」ボタンを表示し、OKCancel であれば「OK」ボタンと「キャンセル」ボタンを表示し、YesNo であれば「はい」ボタンと「いいえ」ボタンを表示するという具合です。

複数のボタンを表示している場合、ユーザーがどのボタンを押したのかが重要になります。ユーザーが押したボタンを知るには Show() メソッドの戻り値を調べます。戻り値は System.Windows.Forms.DialogResult 列挙型のいずれかです。

System.Windows.Forms.DialogResult 列挙型
[Serializable]
[ComVisible(true)]
public enum DialogResult

この列挙体はメッセージボックスのどのボタンが押されたのかを表すメンバを定義しています。「OK」ボタンが押された場合は OK、「キャンセル」ボタンが押された場合は Cancel、「はい」ボタンが押された場合は Yes、「いいえ」ボタンが押された場合は No などの値が返されます。

コード3
using System.Windows.Forms;

public class Test
{
	static void Main() 
	{
		DialogResult result = MessageBox.Show(
			"してるよね。隠し事。", "おやしろ", MessageBoxButtons.YesNo
		);
		
		if (result == DialogResult.Yes)
			MessageBox.Show("あははははははははははははははははははは");
		else MessageBox.Show("嘘だ!!!");
	}
}
実行結果
コード3 実行結果

コード3は、「はい」ボタンと「いいえ」ボタンを持つダイアログを表示し、押されたボタンによって異なるダイアログを表示するというプログラムです。「はい」と「いいえ」ボタンをダイアログに表示するには MessageBoxButtons.YesNo を指定します。押されたボタンの結果は Show() メソッドの戻り値として DialogResult 列挙体型の値が返ります。

この戻り値を調べて DialogResult.Yes と一致すれば「はい」ボタンが押された、DialogResult.No と一致すれば「いいえ」ボタンが押されたと判断することができます。

1.5.4 アイコン

重要なエラーが発生した場合などユーザーの注意をひきつけたいメッセージには視覚的な効果があると便利です。メッセージボックスには定められた基本アイコンを表示することができるため、エラーや警告、情報などメッセージの内容に合わせた適切なアイコンを表示しましょう。アイコンを表示するには次の Show() メソッドを呼び出します。

MessageBox クラス Show() メソッド
public static DialogResult Show(
    string text, string caption,
    MessageBoxButtons buttons, MessageBoxIcon icon
);

icon には、メッセージボックスに表示するアイコンを表す System.Windows.Forms.MessageBoxIcon 列挙体のいずれかのメンバを設定します。

System.Windows.Forms.MessageBoxIcon 列挙体
[Serializable]
public enum MessageBoxIcon

メッセージボックスに表示できるアイコンは、情報アイコン、警告アイコン、エラーアイコン、疑問符アイコンのいずれかです。アイコンを表すメンバは多くありますが、いくつかのメンバは同じアイコンを表します。情報アイコンは Asterisk または Information、警告アイコンは Warning または Exclamation、エラーアイコンは Error または Hand または Stop、疑問符アイコンは Question で表します。

コード4
using System.Windows.Forms;

public class Test
{
	static void Main() 
	{
		MessageBox.Show(
			"Exclamation", "", MessageBoxButtons.OK,
			MessageBoxIcon.Exclamation
		);
		MessageBox.Show(
			"Information", "", MessageBoxButtons.OK,
			MessageBoxIcon.Information
		);
		MessageBox.Show(
			"Question", "", MessageBoxButtons.OK,
			MessageBoxIcon.Question
		);
		MessageBox.Show(
			"Error", "", MessageBoxButtons.OK,
			MessageBoxIcon.Error
		);
	}
}
実行結果
コード4 実行結果

コード4は、MessageBoxIcon 列挙体で定義されている各アイコンをメッセージボックスで表示しています。エラーなどの重要なメッセージを表示するときには、メッセージの内容に合うアイコンを表示してください。