Public Class Form1 Dim chk(10) As CheckBox 'Checkbox Array Dim txt(10) As TextBox 'Textbox Array Dim myButt As New Button 'Hilfsbutton Dim myButt1 As New Button 'noch ein Hilfsbutton Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '--------------------------------------------- 'Erzeugen von ein paar dummy controls For i As Integer = 0 To chk.Length - 1 chk(i) = New CheckBox : txt(i) = New TextBox With chk(i) .Name = "Box" & i : .Text = .Name : .Top = i * .Height If i Mod 2 = 0 Then .Tag = 1 Else .Tag = 3 End With With txt(i) .Name = "TextBox" & i : .Text = .Name : .Top = chk(i).Top If i Mod 2 = 0 Then .Tag = 1 Else .Tag = 3 .Left = chk(i).Left + chk(i).Width End With 'Controls zur Form hinzufügen Me.Controls.Add(chk(i)) Me.Controls.Add(txt(i)) AddHandler chk(i).CheckedChanged, AddressOf HandlesCHK Next '------------------------- 'Buttons hinzufügen Controls.Add(myButt) Controls.Add(myButt1) myButt.Left = Me.Width - myButt.Width - 10 myButt.Text = "alle aus" myButt1.Text = "alle an" myButt1.Left = myButt.Left myButt1.Top = myButt.Top + myButt.Height + 10 AddHandler myButt.Click, AddressOf MyButtClick AddHandler myButt1.Click, AddressOf MyButt1Click '------------------------- End Sub ''' ''' Eventhandler der Checkboxen ''' ''' ''' ''' Private Sub HandlesCHK(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim oBox As CheckBox = sender '' Nur checkboxen ! Disableall(oBox.Tag) 'Array.ForEach(chk, New Action(Of CheckBox)(AddressOf Spass)) End Sub Sub Spass(ByVal obj As System.Windows.Forms.CheckBox) RemoveHandler TryCast(obj, CheckBox).CheckedChanged, AddressOf HandlesCHK 'ohne Handler kein Event ;o) obj.Checked = False AddHandler TryCast(obj, CheckBox).CheckedChanged, AddressOf HandlesCHK 'wieder hinzufügen End Sub Private Sub MyButtClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Disableall() End Sub Private Sub MyButt1Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Enableall() End Sub ''' ''' Alles vom Typ Checkbox / Textbox aktivieren ''' ''' Sub Enableall() For Each ctrl As Control In Me.Controls If ctrl.GetType Is GetType(CheckBox) Then ctrl.Enabled = True ElseIf ctrl.GetType Is GetType(TextBox) Then ctrl.Enabled = True End If Next End Sub ''' ''' Alles vom Typ Checkbox / Textbox deaktivieren ''' ''' CheckedChanged Event wird beim .Checked = False ausgelöst, deswegen den Handler entfernen Sub Disableall() 'Für jedes Control auf der Form For Each ctrl As Control In Me.Controls If ctrl.GetType Is GetType(CheckBox) Then RemoveHandler TryCast(ctrl, CheckBox).CheckedChanged, AddressOf HandlesCHK 'ohne Handler kein Event ;o) TryCast(ctrl, CheckBox).Checked = False AddHandler TryCast(ctrl, CheckBox).CheckedChanged, AddressOf HandlesCHK 'wieder hinzufügen ctrl.Enabled = False ElseIf ctrl.GetType Is GetType(TextBox) Then ctrl.Enabled = False End If Next End Sub ''' ''' Falls ein Tag übergeben wird dann werden nur die Controls mit diesem Tag aktiviert ''' und die anderen deaktiviert ''' ''' ''' Sub Disableall(ByVal iTag As Integer) For Each ctrl As Control In Me.Controls If ctrl.GetType Is GetType(CheckBox) Then If iTag = ctrl.Tag Then ctrl.Enabled = True Else RemoveHandler TryCast(ctrl, CheckBox).CheckedChanged, AddressOf HandlesCHK 'ohne Handler kein Event ;o) TryCast(ctrl, CheckBox).Checked = False AddHandler TryCast(ctrl, CheckBox).CheckedChanged, AddressOf HandlesCHK 'wieder hinzufügen ctrl.Enabled = False End If ElseIf ctrl.GetType Is GetType(TextBox) Then If iTag = ctrl.Tag Then ctrl.Enabled = True Else ctrl.Enabled = False End If End If Next End Sub End Class