【VB.NET】【WPF】起動時に配置済みのコントロールで NullReferenceException が発生する

アプリケーションの起動時に、ウィンドウに配置済みのコントロールで下記のようなエラーが発生しました。

ユーザーが処理していない例外

System.NullReferenceException: 'オブジェクト参照がオブジェクト インスタンスに設定されていません。'

上図でエラーが起きているコントロールは配置済みの DatePicker コントロール(dateUntilThen という名前)です。そしてエラーが起きている場所は、これも配置済みの RadioButton コントロールの Checked イベント内です。DatePicker コントロール「dateUntilThen」に実態が無いのに(中身が Nothing なのに)値を設定しようとしているため、エラーが起きています。

でも、配置済みのコントロールならば、実態があるはずなのに・・・変だなと思いつつ、Loaded の最初の行にブレークポイントを設定してアプリケーションを起動してみたら、そのブレークポイントが無視されて(正確には「無視されたように見えた」)いきなり前述のエラーが発生しました。

つまり、Loaded イベントよりも前にラジオボタンの Checked イベントが先に発生しているようです。でも私はラジオボタンをチェックするようなコードはどこにも書いてないので、どうやら、アプリケーションの起動時にラジオボタンがウィンドウに構築される過程で自動的に Checked イベントが発生しているようです。おそらくそういう仕様なのでしょう。

というわけで、DatePicker コントロール「dateUntilThen」の中身が無い(Nothing)ときにラジオボタンの Checked イベントが発生してもエラーにならないように、コードを If xxxxx IsNot Nothing Then ... End If で囲むことにしました。これで解決。

 

 

 

コメントの投稿

avatar
  購読する  
通知を受け取る対象