• 締切済み

デザイナ時のエラー「オブジェクト参照が…」??

お世話になります。 VB2010です。 どのDatagridViewが選択されたかわかりやすいように 選択時にリッチテキストボックスを後ろに追加して、枠線があるかのように表現しています。 実行時の動きは問題なかったのですが、 デザイナで既存のDatagridViewを削除したときに 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」というエラーが出ます。 また、なぜかDatagridViewを削除するとリッチテキストボックスが残像のように表示されます。 しかも選択しようとしても選択できません。選択できないので削除もできません。 デバッグで見てみてもリッチテキストボックス追加→削除は行われているのに、 なぜデザイナ時にこのエラーがでるのか&残像が出てくるのかわかりません。 どなたかヒントなどいただけると助かります。 よろしくお願いいたします。 ↓リッチテキストボックスの追加と削除 'Enter時 後ろにRichTextBoxを表示 Protected Overrides Sub OnEnter(ByVal e As System.EventArgs) MyBase.OnEnter(e) 'RichTextBox検索 Dim RTxtB As RichTextBox = Nothing For Each Con As Control In MyBase.Parent.Controls If Con.Name = "RTxtB_Shdw_" & MyBase.Name Then RTxtB = Con Exit For End If Next If RTxtB Is Nothing Then 'RichTextBoxなし→後ろにRichTextBoxを追加 RTxtB_Shdw = New RichTextBox() RTxtB_Shdw.Name = "RTxtB_Shdw_" & MyBase.Name RTxtB_Shdw.BorderStyle = Windows.Forms.BorderStyle.None RTxtB_Shdw.BackColor = Color.MidnightBlue RTxtB_Shdw.TabStop = False RTxtB_Shdw.Size = New System.Drawing.Size(MyBase.Width + 4, MyBase.Height + 4) RTxtB_Shdw.Location = New System.Drawing.Point(MyBase.Location.X - 2, MyBase.Location.Y - 2) Try MyBase.Parent.Controls.Add(RTxtB_Shdw) Catch ex As Exception End Try End If End Sub 'Leave時に後ろのRichTextBoxを削除 Protected Overrides Sub OnLeave(ByVal e As System.EventArgs) MyBase.OnLeave(e) 'RichTextBox検索 Dim RTxtB As RichTextBox = Nothing For Each Con As Control In MyBase.Parent.Controls If Con.Name = "RTxtB_Shdw_" & MyBase.Name Then RTxtB = Con Exit For End If Next If Not RTxtB Is Nothing Then 'RichTextBoxあり→削除 MyBase.Parent.Controls.Remove(RTxtB) RTxtB = Nothing End If End Sub

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

デザイナの表示にもプログラムコードのインスタンス生成時の 処理が実行されるようです。 > Overrides Sub 継承などで独自の機能を追加してそうなコードですので、 コンストラクタなどで必要なオブジェクトの生成が不十分 なのでは?

kogeru_006
質問者

お礼

回答ありがとうございます! デザイナ時にも実行されるんですね。。シラナカッタ! >コンストラクタなどで必要なオブジェクトの生成 ?? うーん。ちょっと調べてみます。 改善できたらまた追記しますね!

kogeru_006
質問者

補足

すみません。 結局わからず…。 回答もつかないようなので〆させていただきます。 MARU4812さん、ありがとうございました!

関連するQ&A