Другая возможность состоит в том, чтобы создать пользовательский GroupBox
, т.е. производный от GroupBox
и выставляя событие себя:
Public Class CheckboxGroup
Inherits GroupBox
Public Event CheckboxChanged(source As CheckBox, e As EventArgs)
Protected Overrides Sub OnControlAdded(e As ControlEventArgs)
' this method is called everytime a checkbox is added
If TypeOf e.Control Is CheckBox Then
Dim chk As CheckBox = DirectCast(e.Control, CheckBox)
AddHandler chk.CheckedChanged, AddressOf AllCheckedChange
End If
End Sub
Private Sub AllCheckedChange(source As Object, e As EventArgs)
If TypeOf source Is CheckBox Then
Dim chk As CheckBox = DirectCast(source, CheckBox)
RaiseEvent CheckboxChanged(chk, e)
End If
End Sub
End Class
Вы можете прикрепить к событию в Form
вроде:
Private Sub CheckboxChanged(source As CheckBox, e As EventArgs) Handles gb.CheckboxChanged
MsgBox(source.Text & " to " & source.Checked)
End Sub
Advantage : вы никогда не сможете пропустить добавление обработчика события в CheckBox
, даже если он создан динамически.
Я хотел бы это увидеть! в любом случае, как насчет создания метода, называемого * DoSomething() *, и для каждого события * SelectedIndexChanged *, просто вызывайте * DoSomething(); * ??? – jbutler483
Я предполагаю, что это сработает, но это так же трудоемко, как и другой вариант :) – Ciacciu
не забывайте, вы можете иметь представление дизайнера на половине экрана и половину кода экрана. Дважды щелкните по одному, вставив метод * DoSomething() * на другую половину. Это так же быстро, как мне кажется, я боюсь :( – jbutler483