【C#】【Form】メッセージボックス(MessageBox) / ダイアログ

■ 概要

 今更だが、知らなかったこと等を中心に纏めておく。

■ メッセージボックス

サンプル

private void button1_Click(object sender, EventArgs e)
{
    DialogResult result = MessageBox.Show(
        "テストです", "警告",
        MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
    MessageBox.Show(result.ToString());
}
参考資料
http://objectstyle.seesaa.net/article/122992847.html
http://jeanne.wankuma.com/tips/csharp/dialog/messagebox.html

使用上の注意

 * 画面表示前の初期化失敗時にダイアログ表示する際には、
   オーナーウィンドウを指定する「MessageBox.Show(this, ...」は使えないので注意
   => 例外も発生せずにダイアログも表示されないので原因が分からずにハマった。

public partial class Form1 : Form
{
  public Form1(string id)
  {
    InitializeComponent();

    if (this.Initialize(id))
    {
      // オーナーウィンドウを指定「MessageBox.Show(this, ...」はダメ!
      // MessageBox.Show(this, "初期化失敗", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
      MessageBox.Show("初期化失敗", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
  }

  private bool Initialize(string id)
  {
    try
    {
      // 初期化処理
    }
    catch (Exception)
    {
      // 初期化失敗
      return false;
    }
  }

  // ...
}

メッセージボックス・あれこれ

''' ボタンの種類 ==
 * ボタンの種類「AbortRetryIgnore」「YesNo」のメッセージボックスは、×ボタンが非活性になる
http://dobon.net/vb/dotnet/form/msgbox.html
http://blogwp.whiter.jp/?p=82/
Iconの種類
 * Iconの種類「Question」は、現在、非推奨らしい(結構良く使うのに)
http://dobon.net/vb/dotnet/form/msgbox.html
デフォルト・ボタンの変更
 * デフォルト・ボタンを変更するには、以下を参照のこと。
http://www.atmarkit.co.jp/fdotnet/dotnettips/300msgboxdefbtn/msgboxdefbtn.html

■ ダイアログ

ダイアログ・あれこれ

表示位置
 * FormのStartPosition プロパティで「CenterParent」にすれば
   親画面の中央に表示される
  => StartPosition プロパティ については、以下の関連記事を参照。
https://blogs.yahoo.co.jp/dk521123/20513730.html

関連記事

Windows Form ~ 目次 ~

https://blogs.yahoo.co.jp/dk521123/8054245.html

Form ~ プロパティ編 ~

https://blogs.yahoo.co.jp/dk521123/20513730.html