お世話になります。
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
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
デザイナの表示にもプログラムコードのインスタンス生成時の
処理が実行されるようです。
> Overrides Sub
継承などで独自の機能を追加してそうなコードですので、
コンストラクタなどで必要なオブジェクトの生成が不十分
なのでは?
回答ありがとうございます!
デザイナ時にも実行されるんですね。。シラナカッタ!
>コンストラクタなどで必要なオブジェクトの生成
??
うーん。ちょっと調べてみます。
改善できたらまた追記しますね!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンストラクタ内でのthisポインタ
-
クラス内にWin32APIのコールバ...
-
オブジェクトをどこでdisposeす...
-
C# panel内のコントロールの使...
-
CreateObjectとはどういう意味...
-
デザイナ時のエラー「オブジェ...
-
c# nullは空集合として扱かって...
-
既定のコンストラクタがない?
-
ユーザーフォームのVBAエラー
-
FriendとPublicの違い。。。
-
MFCのCListCtrlでスクロールを検出
-
MFCのドラッグ&ドロップについて
-
ダイアログ表示時にチェックボ...
-
(UWSC) 「#32770」の意味わかり...
-
イベントにAddHandlerされてい...
-
C#で通常のbuttonコントロール...
-
OnInitDialog()の関数の組み込み方
-
VB.NETでC#のイベントをオーバ...
-
DebugクラスとTraceクラスの違い
-
privateなメンバ関数をテストす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CreateObjectとはどういう意味...
-
オブジェクト型の変数が定義さ...
-
ボタンを押すとラベルの文字を...
-
C# panel内のコントロールの使...
-
コンストラクタ内でのthisポインタ
-
クラス内にWin32APIのコールバ...
-
メモリリークが発生するのはど...
-
【VC++6.0(MFC)】「Out of memo...
-
関数で値渡しと参照渡しではど...
-
オブジェクトをどこでdisposeす...
-
C++の連想配列の使い方
-
すべてのページにServer.Create...
-
VB6では、Applicationは未定義...
-
チュートリアル : オブジェクト...
-
SetとNothingの存在意味?
-
Visual studio c# android オブ...
-
【VC++.NET】コンストラクタと...
-
C#でExcelを起動したい
-
ゆかりネットで東北ずん子exを...
-
ADODB.Connectionはインターフ...
おすすめ情報