[C#] メッセージボックスでYes/Noオプションを表示する方法
C#でメッセージボックスにYes/Noオプションを表示するには、System.Windows.Forms名前空間のMessageBoxクラスを使用します。
MessageBox.Showメソッドを呼び出し、表示するメッセージ、タイトル、ボタンの種類を指定します。
ボタンの種類にはMessageBoxButtons.YesNoを使用します。
例えば、MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.YesNo)と記述します。
このメソッドはDialogResultを返し、ユーザーが選択したボタンに応じてDialogResult.YesまたはDialogResult.Noを確認できます。
これにより、ユーザーの選択に基づいた処理を実装できます。
MessageBoxクラスの概要
C#のプログラミングにおいて、ユーザーに対して情報を表示したり、選択を促したりするために使用されるのがMessageBoxクラスです。
このクラスは、Windowsフォームアプリケーションで特に便利で、簡単にメッセージダイアログを表示することができます。
MessageBoxクラスの役割
MessageBoxクラスは、ユーザーインターフェースの一部として、情報の表示やユーザーからの入力を受け取るためのダイアログボックスを提供します。
主な役割は以下の通りです。
- 情報の表示: ユーザーに対して情報を伝えるために使用します。
- 確認の要求: ユーザーに対してYes/NoやOK/Cancelなどの選択を求めることができます。
- 警告の表示: エラーや警告メッセージを表示することで、ユーザーに注意を促します。
MessageBoxクラスのメソッド
MessageBoxクラスには、メッセージボックスを表示するためのメソッドが用意されています。
主なメソッドは以下の通りです。
| メソッド名 | 説明 |
|---|---|
Show | メッセージボックスを表示します。引数により、表示するメッセージやボタンの種類を指定できます。 |
以下は、MessageBox.Showメソッドを使用したサンプルコードです。
using System;
using System.Windows.Forms;
class Program
{
static void Main()
{
// メッセージボックスを表示
MessageBox.Show("こんにちは、世界!", "挨拶", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
このコードを実行すると、「こんにちは、世界!」というメッセージが表示されるダイアログボックスが開きます。
MessageBoxクラスのプロパティ
MessageBoxクラス自体にはプロパティはありませんが、MessageBox.Showメソッドの引数として、メッセージボックスの表示内容をカスタマイズするためのオプションを指定できます。
主なオプションは以下の通りです。
| オプション名 | 説明 |
|---|---|
MessageBoxButtons | メッセージボックスに表示するボタンの種類を指定します。例:OK, YesNo |
MessageBoxIcon | メッセージボックスに表示するアイコンを指定します。例:Information, Warning |
MessageBoxDefaultButton | デフォルトで選択されるボタンを指定します。 |
これらのオプションを組み合わせることで、ユーザーに対して適切なメッセージと選択肢を提供することができます。
Yes/Noオプションの表示方法
C#のMessageBoxクラスを使用すると、ユーザーに対してYes/Noの選択肢を提供するメッセージボックスを簡単に表示することができます。
これにより、ユーザーの意思決定を促すことが可能です。
MessageBoxButtons列挙体の説明
MessageBoxButtons列挙体は、MessageBoxに表示するボタンの種類を指定するために使用されます。
この列挙体には、以下のようなオプションが含まれています。
| 列挙体名 | 説明 |
|---|---|
OK | OKボタンのみを表示します。 |
OKCancel | OKとキャンセルボタンを表示します。 |
YesNo | YesとNoボタンを表示します。 |
YesNoCancel | Yes、No、キャンセルボタンを表示します。 |
YesNoオプションを使用することで、ユーザーに対してYesまたはNoの選択を求めることができます。
Yes/Noオプションの指定方法
MessageBox.Showメソッドの引数にMessageBoxButtons.YesNoを指定することで、Yes/Noオプションを持つメッセージボックスを表示することができます。
以下のように指定します。
MessageBox.Show("この操作を続行しますか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);このコードでは、「この操作を続行しますか?」というメッセージとともに、YesとNoのボタンが表示されます。
Yes/Noオプションの実装例
以下は、Yes/Noオプションを使用したメッセージボックスの実装例です。
using System;
using System.Windows.Forms;
class Program
{
static void Main()
{
// Yes/Noオプションのメッセージボックスを表示
DialogResult result = MessageBox.Show("この操作を続行しますか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// ユーザーの選択に応じた処理
if (result == DialogResult.Yes)
{
MessageBox.Show("操作を続行します。", "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("操作をキャンセルしました。", "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}このコードを実行すると、最初に「この操作を続行しますか?」というメッセージボックスが表示されます。

ユーザーがYesを選択すると「操作を続行します。」というメッセージが表示され、Noを選択すると「操作をキャンセルしました。」というメッセージが表示されます。
ユーザーの選択結果の処理
MessageBoxを使用してユーザーに選択を促した後、その選択結果を処理することが重要です。
C#では、DialogResultを使用してユーザーの選択結果を取得し、それに基づいて適切な処理を行います。
DialogResultの概要
DialogResultは、ユーザーがメッセージボックスで選択したボタンを示す列挙体です。
MessageBox.Showメソッドは、ユーザーの選択に応じたDialogResultを返します。
主なDialogResultの値は以下の通りです。
| 値 | 説明 |
|---|---|
OK | OKボタンがクリックされた |
Cancel | キャンセルボタンがクリックされた |
Yes | Yesボタンがクリックされた |
No | Noボタンがクリックされた |
これらの値を使用して、ユーザーの選択に応じた処理を実装することができます。
Yes/No選択結果の取得方法
MessageBox.Showメソッドの戻り値をDialogResult型の変数に格納することで、ユーザーの選択結果を取得できます。
以下のコードは、Yes/No選択結果を取得する方法を示しています。
DialogResult result = MessageBox.Show("この操作を続行しますか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);このコードでは、ユーザーが選択した結果がresult変数に格納されます。
選択結果に基づく処理の実装
ユーザーの選択結果に基づいて、異なる処理を実行することができます。
以下は、Yes/No選択結果に基づく処理の実装例です。
using System;
using System.Windows.Forms;
class Program
{
static void Main()
{
// Yes/Noオプションのメッセージボックスを表示し、結果を取得
DialogResult result = MessageBox.Show("この操作を続行しますか?", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
// ユーザーの選択に応じた処理
if (result == DialogResult.Yes)
{
// Yesが選択された場合の処理
MessageBox.Show("操作を続行します。", "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
// Noが選択された場合の処理
MessageBox.Show("操作をキャンセルしました。", "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}このコードを実行すると、ユーザーがYesを選択した場合は「操作を続行します。」というメッセージが表示され、Noを選択した場合は「操作をキャンセルしました。」というメッセージが表示されます。

ユーザーの選択に応じて異なるメッセージを表示することで、アプリケーションの動作を制御できます。
応用例
MessageBoxクラスを使用した基本的なメッセージボックスの表示方法を理解したところで、さらに応用的な使い方を見ていきましょう。
ここでは、カスタムメッセージボックスの作成、デザインの変更、タイムアウト設定について説明します。
カスタムメッセージボックスの作成
標準のMessageBoxではなく、よりカスタマイズされたメッセージボックスを作成したい場合は、Windowsフォームを使用して独自のダイアログを作成することができます。
以下は、カスタムメッセージボックスの基本的な作成手順です。
- 新しいフォームを作成: Visual Studioで新しいWindowsフォームを作成します。
- UI要素の配置: ラベル、ボタンなどのUI要素を配置し、必要なメッセージやボタンを設定します。
- イベントハンドラの追加: ボタンのクリックイベントに応じた処理を実装します。
この方法により、デザインや機能を自由にカスタマイズしたメッセージボックスを作成できます。
メッセージボックスのデザイン変更
標準のMessageBoxのデザインを変更することはできませんが、カスタムメッセージボックスを作成することで、デザインを自由に変更することができます。
以下の要素を変更することで、デザインをカスタマイズできます。
- フォントと色: ラベルやボタンのフォントや色を変更します。
- アイコン: カスタムアイコンを使用して、メッセージの種類を視覚的に示します。
- レイアウト: ボタンやテキストの配置を変更して、ユーザーにとって使いやすいデザインにします。
これにより、アプリケーションのテーマやスタイルに合わせたメッセージボックスを作成することができます。
メッセージボックスのタイムアウト設定
標準のMessageBoxにはタイムアウト機能はありませんが、カスタムメッセージボックスを作成することで、一定時間後に自動的に閉じるように設定することができます。
以下は、タイムアウトを設定するための基本的な手順です。
- タイマーの追加: フォームに
Timerコントロールを追加します。 - タイマーの設定: タイマーの
Intervalプロパティを設定し、Tickイベントでフォームを閉じる処理を実装します。
using System;
using System.Windows.Forms;
using Timer = System.Windows.Forms.Timer;
public class CustomMessageBox : Form
{
private Timer timer;
public CustomMessageBox()
{
// タイマーの設定
timer = new Timer();
timer.Interval = 5000; // 5秒後に閉じる
timer.Tick += (s, e) => this.Close();
timer.Start();
// メッセージとボタンの設定
Label messageLabel = new Label() { Text = "自動的に閉じます", Dock = DockStyle.Fill };
this.Controls.Add(messageLabel);
}
public static void ShowCustom()
{
CustomMessageBox box = new CustomMessageBox();
box.ShowDialog();
}
}
public class Program
{
public static void Main()
{
Application.Run(new CustomMessageBox());
}
}このコードを使用すると、5秒後に自動的に閉じるカスタムメッセージボックスを表示することができます。
タイムアウト機能を追加することで、ユーザーの操作を待たずにメッセージを閉じることが可能になります。
まとめ
この記事では、C#のMessageBoxクラスを用いて、ユーザーにYes/Noの選択肢を提示する方法について詳しく解説しました。
MessageBoxの基本的な使い方から、ユーザーの選択結果を処理する方法、さらにはカスタムメッセージボックスの作成やデザインの変更、タイムアウト設定といった応用的な内容までをカバーしました。
これを機に、実際のプロジェクトでMessageBoxを活用し、ユーザーインターフェースをよりインタラクティブで使いやすいものにしてみてはいかがでしょうか。