Хорошей идеей было бы использовать некоторый интерфейс маркера, такой как IHasWhwhatEvent (скажите мне, какой из них, и я составлю лучшее имя, конечно!).Этот интерфейс не имеет членов, так как он является маркерным.
Вы делаете любой из своих пользовательских элементов управления, имеющих это событие, реализующий этот пустой интерфейс, затем вы делаете это:
For Each x As Control In Me.Controls
If x Is IHasWhateverEvent Then
SomeAction(((IHasWhateverEvent)x).CustomEventofCustomControl)
End If
Next
Или, если выможете просто добавить событие в свой интерфейс, чтобы при передаче элемента управления IHasWhwhatEvent у вас был доступ к самому событию.