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