Form Load内の例外

Form.Show()したときのForm_Load内で発生した例外は、親フォームでキャッチできないのは、親フォームと異なるスレッドの為。Form.ShowDialog()であれば、親フォームでキャッチできる。

仕方が無いのでInitForm()を作成し、Form_Loadでは基本的には何もしないこととした。

DesignModeを判定する

フォームのコンストラクタはデザイン時でも実行されるらしく、存在しないファイルへアクセスなどしているとトラブルになるので、デザイン時かどうか判定する。

bool ret = false;
if (System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime) ret = true;
if (System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToUpper().Equals("DEVENV")) ret = true;
return ret;