Ereignisse bei dyn. Elementen

Speedkill

Erfahrenes Mitglied
Hallo Leute,

Ich habe in einer Windows Form ein Panel in welchem ich dynamisch Checkboxen und Textboxen erzeuge.
etwa so:

Code:
Private Function loadTests(ByVal node As String)

Dim i As Integer = 0

Dim j As Integer = 0

Dim posX As Integer = 5

Dim posY As Integer = 5

Dim tests As Xml.XmlNodeList = allTests.giveTestOptions(node)

Dim element As Xml.XmlNode

Dim arrCheckBox() As CheckBox

Dim arrTextBox() As TextBox

ReDim arrCheckBox(tests.Count)

ReDim arrTextBox(tests.Count)

 

For j = 1 To tests.Count

' Erzeugung der Testattribute

arrCheckBox(j) = New CheckBox

arrCheckBox(j).Text = tests(j - 1).Name

arrCheckBox(j).Parent = pnlTests

arrCheckBox(j).Visible = True 'Sichtbar machen

arrCheckBox(j).SetBounds(posX, posY, 80, 20)

' Erzeugung der Attributtextboxen

arrTextBox(j) = New TextBox

arrTextBox(j).Text = tests(j - 1).Value

arrTextBox(j).Parent = pnlTests

arrTextBox(j).Visible = True 'Sichtbar machen

arrTextBox(j).SetBounds(posX + 90, posY, 80, 20)

posY += 25

Next

End Function

Das funktioniert soweit auch wunderbar dank eurer hilfe ;) !
Ich erhalte also zu jeder Checkbox ein Textfeld und nun hätte ich gerne daß wenn ich eine Checkbox anwähle das Textfeld enabled wird und bei Abwahl disabled.

Ich kann jedoch in der Form nicht auf die Objekte zugreifen da sie ja erst zur Laufzeit gebunden werden.

Das Panel bietet auch keine Funktion in der Art "onChildStatusChange" oder sowas.

Wie kriege ich das hin?
Ich habe schon versucht mich bei msdn mit Ereignishandlern rumzuschlagen aber ich glaube ich bin zu doof dafür.

Hat jemand ne Lösung parat oder kann mir nen Hinweis geben?

Danke
Speedy
 
Kanns leider nicht testen (Im Moment keine .NET Umgebung), aber es sollte so funktionieren:
Code:
AddHandler arrCheckBox(j).CheckedChanged, AddressOf chkClick

Private Sub chkClick(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim currentChk As Checkbox = CType(sender, Checkbox)

        For i As Integer = 0 To tests.Count
            If arrCheckBox(i) Is currentChk Then
                If arrCheckBox(i).checked = True Then
                   arrTextBox(i).Enabled = True
                Else
                   arrTextBox(i).Enabled = False
                End If
            End If
        Next
End Sub
Dort steht jetzt bewusst 0 To ... Du hast bei dir oben 1 To ... gemacht und nutzt damit den Index 0 nicht. Das würde ich ändern.
 
Zuletzt bearbeitet:
Zurück