Devろぐ

日々の開発作業で使用する知識やスキルのための備忘録です。 また、閲覧いただいた方からフィードバックをいただくことで、更なる技術向上を目指しています。

【C#】Form デザイナー表示時の処理を回避する。

デザイナーについて

VisualStudio上でFormアプリケーションを開発する際、

「デザイナー」という物を多用すると思う。

これは、フォームクラスを作成した際、「.Designer.cs」という拡張子のファイルが自動生成され、そこにUIの初期化処理が自動でコーディングされる。

そのUIをグラフィカルに表示し、編集するための物が「デザイナー」と呼ばれる画面だ。

問題点

一見便利な「デザイナー」だが、若干癖がある。

例えば下記のような処理にてデザイナーが表示できない不具合があったとする。

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
  }

   private void Form1_Load(object sender, EventArgs e)
        {
            /*                        */
            /*  不具合の原因となる処理  */
            /*                        */
        }
}

フォームクラスのLoadイベント内の処理をデザイナー表示時のみ処理をさせたくない場合、下記のように「DesignMode」プロパティを参照すると、デザイナー表示時かそうでないかを判断できる。

public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
  }

   private void Form1_Load(object sender, EventArgs e)
        {
            //デザイナーを開く場合は処理を抜ける。
           if (true == DesignMode) return;
            /*                         */
            /*  不具合の原因となる処理  */
            /*                         */
        }
}