Form.ActiveFormプロパティとデバッグ

以下のように、Form.ActiveFormのプロパティを判定しているコードがあったとしよう。

if ( Form.ActiveForm.ActiveControl != null)
{
    if (!Form.ActiveForm.ActiveControl.CausesValidation)
    {
        return;
    }
}

Visual Studio 2005でこのコードを含むコードをデバッグしていると、先頭でNullReferenceExceptionが投げられることがある。デバッグ無しでアセンブリを実行した場合は例外は発生しないのに、だ。

Delphiを使っていた時代に散々経験しているので、解っているつもりでいたのだが。

他にもLostFocusがらみなどでよく起きることだが、Windows等、メッセージベースのGUIツールキットのデバッグ時には注意しなくてはならないことが多い。