YiaoWang
{@last-update}

.NET:Tips > デザイン:デザイン時に処理を実行させない

デザイン時に処理を実行させない

デザイン画面を表示した時に、継承元フォームやユーザコントロールの処理が実行されてしまうことがあります。この場合、フォームやコントロールのDesignModeを利用します。

if (this.DesignMode) return; If Me.DesignMode Then Return

DesignModeで捕捉できないケース

継承元フォームやユーザコントロール等のコンストラクタでは、DesignModeは常にFalseになります。また、入れ子になったユーザーコントロールのDesignModeも常にFalseになります。
AppDomain.CurrentDomain.FriendlyNameは、画面デザイン時に"DefaultDomain"をビルド実行時にはアセンブリファイル名を返すため、一見するとコンストラクタ内でもデザイン時か否かを判断できそうです。しかし、C#2005でClickOnceでの配布による実行時に"DefaultDomain"を返しました。FriendlyNameを正確に把握しないでDesignModeの代用にするのは非常に危険です。

参考ページ

inserted by FC2 system