【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; /* */ /* 不具合の原因となる処理 */ /* */ } }