(ユーザーコントロール)オブジェクト参照がオブジェクト インスタンスに設定されていません。

VisualStudio2013のデザイナー画面で、自作のユーザーコントロールを貼り付けて、ビルドしてエラーが出ないことを確認して、もう一度画面を開こうとしたら、エラーが出て開かないわけです。



「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーメッセージが出ているわけですが、わけがわからない。



別のユーザーコントロールを貼り付けてもエラーは起きないので、自作のコントロールが悪いのは間違いない。しかし、なにが良くないのか?

解決策

自作のユーザーコントロールに自作のプロパティを追加してsetメソッドを実装していると、デザイナーがnullを代入するコードを作ってくれる。nullが代入されることを想定していないと例外が発生して、それで上記のエラーが起きていたようだ。

//
// uc列選択1
//
this.uc列選択1.Font = new System.Drawing.Font("Meiryo UI", 11.25F, 
  System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(128)));
this.uc列選択1.Location = new System.Drawing.Point(88, 88);
this.uc列選択1.Margin = new System.Windows.Forms.Padding(4);
this.uc列選択1.mmSelectedColumn = null;  // NG
this.uc列選択1.Name = "uc列選択1";
this.uc列選択1.Size = new System.Drawing.Size(160, 34);
this.uc列選択1.TabIndex = 13;

うーむ、nullで例外というのは、なかなか恥ずかしいが、もう少しわかりやすいエラーを表示して欲しいところ。1時間くらい悩んでしまった。無駄な時間を過ごした。



コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。