|
Tipp 0171
|
RadioButtons in Group-Controls zentral auswerten
|
|
|
Autor/Einsender: Datum: |
|
Michael Werner 30.10.2007 |
|
Entwicklungsumgebung: |
|
VB.Net 2005 |
Framework: |
|
2.0 |
|
|
Mehrere zusammengehörige RadioButtons oder CheckBoxen werden sinnvoller Weise in einem Container, wie z.B. einer GroupBox
oder einem Panel Zusammengefasst. Im Formular wird durch Doppelklick auf einen einzelnen RadioButton als Code das Standardereignis
CheckedChanged generiert. Benötigen Sie allerdings zahlreiche RadioButtons und diese eventuell in verschiedenen Group-Controls gebündelt,
so wird das Event-Handling ziemlich unübersichtlich.
|
Hier bietet sich dann eine zentrale Auswertung der CheckedChanged-Ereignisse an.
Mittels AddHandler wir im Beispiel auf eine benutzerdefinierte Prozedur
"RadioButton_CheckedChanged" verwiesen, die die Klicks zentral auswertet.
Wichtig bei der Deklaration der Eventhandler-Prozedur: Die Signatur der
Prozedur muss mit der Signatur des Ereignisses übereinstimmen. In diesem Fall
(RadioButton) ist es: "(ByVal sender As System.Object, ByVal e As
System.EventArgs)".
|
|
|
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
'Controls in der Form
For Each ctrl As Control In Me.Controls
'RadioButtons auf Formularebenen
If TypeOf ctrl Is RadioButton Then
Dim rb As RadioButton = DirectCast(ctrl, RadioButton)
AddHandler rb.CheckedChanged, AddressOf _
RadioButton_CheckedChanged
End If
'Controls in GroupBoxen
If TypeOf ctrl Is GroupBox Then
'RadioButtons in GroupBoxen
For Each ctrl2 As Control In ctrl.Controls
Dim rb As RadioButton = DirectCast(ctrl2, RadioButton)
AddHandler rb.CheckedChanged, AddressOf _
RadioButton_CheckedChanged
Next
End If
Next
End Sub
Private Sub RadioButton_CheckedChanged(ByVal sender As _
System.Object, ByVal e As System.EventArgs)
Label1.Text = DirectCast(sender, Control).Name
End Sub
|
|
|
|
|
Windows-Version |
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
|
Download (18,6
kB)
|
Downloads bisher: [ 220 ]
|
|
|