Hallo Manfred,
habe jetzt die Lösung gefunden.
Folgender Code erledigt genau das, was ich haben möchte.
Hier zuerst noch einmal der leicht veränderte Code von oben.
Private Sub Zentralen_Load(sender As System.Object, e As System.EventArgs) _
Handles MyBase.Load
......
With RadioButton ' hier werden ihr die Eigenschaften gegeben
.....
'DIESE ZEILE WURDE GEÄNDERT BZW. AKTIVIERT
AddHandler RadioButton.CheckedChanged, AddressOf _
Zentralen_StandardBaudrate_Ändern
......
End Sub und hier nun der Rest:
Sub Zentralen_StandardBaudrate_Ändern(sender As System.Object, e As _
System.EventArgs)
' Die Standardbaudrate in einer Textbox anzeigen
For Each ctrl As Control In CheckboxBaudrateGroupBox.Controls
If TypeOf ctrl Is RadioButton Then
If DirectCast(ctrl, RadioButton).Checked = True Then
StandardBaudrate.Text = Replace(DirectCast(ctrl, _
RadioButton).Name, "ChkBoxStandardBaudrate", "")
End If
End If
Next
' Nun prüfen, ob diese Wahl auch gültig ist.
' Dazu werden nun die Checkboxen geprüft, ob diese angewählt wurden
z = 0
gef = False
For Each ctrl As Control In CheckboxBaudrateGroupBox.Controls
z = z + 1
If TypeOf ctrl Is CheckBox Then
If DirectCast(ctrl, CheckBox).Checked = True And z = _
StandardBaudrate.Text Then
gef = True
End If
End If
Next
If gef = False Then
' Die Auswahl zurücksetzen, in dem alle Radiobuttons auf FALSE
' gesetzt werden
' Zuvor aber noch prüfen, ob die Standardbaudrate überhaupt einen
' Wert hat. Dadurch kommt diese Meldung auch nur 1 Mal
If StandardBaudrate.Text <> 0 Then
MsgBox("Leider ist diese Auswahl der Baudrate als Standard" & _
"nicht (mehr) möglich, da diese Baudrate nicht aktiviert ist" & _
"bzw. gerade deaktiviert wurde. Aktivieren Sie bite erst" & _
"diese Baudrate, bevor Sie diese als Standard festlegen.")
' Standardbaudrate löschen und dafür sorgen, dass die
' Fehlermeldung nur 1 Mal erscheint.
StandardBaudrate.Text = 0
End If
For Each ctrl As Control In CheckboxBaudrateGroupBox.Controls
If TypeOf ctrl Is RadioButton Then
If DirectCast(ctrl, RadioButton).Checked = True Then
DirectCast(ctrl, RadioButton).Checked = False
End If
End If
Next
End If
End Sub
Sub Zentralen_BaudRate_Ändern(sender As System.Object, e As _
System.EventArgs)
' nun die aktuelle Checkbox die Textfarbe auf Rot setzen
For Each ctrl As Control In CheckboxBaudrateGroupBox.Controls
If TypeOf ctrl Is CheckBox Then
If DirectCast(ctrl, CheckBox).Checked = True Then
DirectCast(ctrl, CheckBox).ForeColor = Color.Red
Else
DirectCast(ctrl, CheckBox).ForeColor = Color.Black
' Prüfen, ob diese gewählte Checkbox als Standard
' deklariert wurde, wenn ja, diese Markierung entfernen
If StandardBaudrate.Text <> "" Then
z = Replace(DirectCast(ctrl, CheckBox).Name, "CHKBAUD", _
"") + 1
If z = Val(StandardBaudrate.Text) Then
For Each ctrl2 As Control In _
CheckboxBaudrateGroupBox.Controls
If TypeOf ctrl2 Is RadioButton Then
If DirectCast(ctrl2, RadioButton).Checked = _
True Then
DirectCast(ctrl2, RadioButton).Checked _
= False
End If
End If
Next
End If
End If
End If
End If
Next
End SubVielen Dank trotzdem für die Antwort.
Volker |