ランタイムで生成されたグループボックスでランタイムで生成されたチェックボックス名を変更する際に問題が発生しました。複数のグループボックスを使用していて、データベース内のすべての行を取得して、それらのチェックボックスを作成しています。チェックボックスの名前は次のとおりです""chkClass "&intGroupBoxNumber&intCurrentRow"。グループボックスを削除したら、現在のすべてのグループボックスの番号を付け直します。意味がある場合は、チェックボックスの名前も新しいグループボックスの番号に変更します。私のコードは次のとおりです。
strControlName = "grpGroup" & strIBResult
Try
intGroupBoxOldYLocation = Me.Controls(strControlName).Location
Me.Controls(strControlName).Dispose()
MessageBox.Show("Deleted: " & strControlName)
intRenameGroup = strIBResult + 1
Try
strControlName = "grpGroup" & intRenameGroup
strControlNewName = "grpGroup" & intRenameGroup - 1
Me.Controls(strControlName).Location = intGroupBoxOldYLocation
Me.Controls(strControlName).Text = "Group " & intRenameGroup - 1
Me.Controls(strControlName).Name = strControlNewName
MessageBox.Show("Changed: " & strControlName & " to: " & strControlNewName)
Do While intCurrentClassRow < intTotalClassRows
strCheckBoxOldName = "chkClass" & intRenameGroup & intCurrentClassRow
strCheckBoxNewName = "chkClass" & intRenameGroup - 1 & intCurrentClassRow
MessageBox.Show("Renaming: " & strCheckBoxOldName & " to: " & strCheckBoxNewName)
Me.Controls(strCheckBoxOldName).Name = strCheckBoxNewName
intCurrentClassRow += 1
MessageBox.Show("Renamed: " & strCheckBoxOldName & " to: " & strCheckBoxNewName)
Loop
intCurrentClassRow = 0
intRenameGroup += 1
intGroupBoxNewYIncrement = intGroupBoxOldYLocation.Y + Me.Controls(strControlNewName).Height + 50
Do
strControlName = "grpGroup" & intRenameGroup
strControlNewName = "grpGroup" & intRenameGroup - 1
Me.Controls(strControlName).Location = New Point(intCurrentXPosition, intGroupBoxNewYIncrement)
Me.Controls(strControlName).Text = "Group " & intRenameGroup - 1
Me.Controls(strControlName).Name = strControlNewName
Do While intCurrentClassRow < intTotalClassRows
strCheckBoxOldName = "chkClass" & intRenameGroup & intCurrentClassRow
strCheckBoxNewName = "chkClass" & intRenameGroup - 1 & intCurrentClassRow
Me.Controls(strCheckBoxOldName).Name = strCheckBoxNewName
intCurrentClassRow += 1
MessageBox.Show("Renamed: " & strCheckBoxOldName & " to: " & strCheckBoxNewName)
Loop
intCurrentClassRow = 0
intRenameGroup += 1
intGroupBoxNewYIncrement = intGroupBoxNewYIncrement + Me.Controls(strControlNewName).Height + 50
Loop
Catch ex As Exception
MessageBox.Show("Control: " & strControlName & " does not exist")
MessageBox.Show(ErrorToString)
End Try
Catch ex As Exception
'MessageBox.Show("Control: " & strControlName & " never existed")
MessageBox.Show("Please enter a valid group number to delete.", "Invalid Entry")
Exit Sub
End Try
私の問題はMe.Controls(strCheckBoxOldName).Name=strCheckBoxNewNameにあると確信しています。
エラーは次のとおりです:「オブジェクト参照がオブジェクトのインスタンスに設定されていません」
そのランタイムで生成されたグループボックスを参照する別の方法はありますか?
ありがとう。これが混乱している場合は申し訳ありません!