(ユーザーコントロール)オブジェクト参照がオブジェクト インスタンスに設定されていません。
VisualStudio2013のデザイナー画面で、自作のユーザーコントロールを貼り付けて、ビルドしてエラーが出ないことを確認して、もう一度画面を開こうとしたら、エラーが出て開かないわけです。
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーメッセージが出ているわけですが、わけがわからない。
別のユーザーコントロールを貼り付けてもエラーは起きないので、自作のコントロールが悪いのは間違いない。しかし、なにが良くないのか?
うーむ、nullで例外というのは、なかなか恥ずかしいが、もう少しわかりやすいエラーを表示して欲しいところ。1時間くらい悩んでしまった。無駄な時間を過ごした。
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」というエラーメッセージが出ているわけですが、わけがわからない。
解決策
自作のユーザーコントロールに自作のプロパティを追加して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時間くらい悩んでしまった。無駄な時間を過ごした。
コメント
コメントを投稿