В конце концов, я нашел решение: мне нужен список, поэтому я создал его и добавил только один обработчик событий для объекта списка:
В модуле, содержащем некоторые глобальные переменные, я объявил
Public StaticScales As New BindingList(Of StaticScaleDetails)
, чтобы к нему можно было получить доступ из любого места.
Я добавил обработчик событий в свой Main:
Private LastIndex As Integer 'Variable to keep track of the size the list was the last time the event has been triggered
Private Sub ListIsChanged()
If StaticScales.Count > LastIndex And StaticScales.Count <= 5 Then
'Console.WriteLine("The list has changed: its size changed from {0} to {1}!", LastIndex, StaticScales.Count)
SelectLabelsToAssociate()
LastIndex = StaticScales.Count
End If
End Sub
И в Load of My Main:
LastIndex = 0
AddHandler StaticScales.ListChanged, AddressOf ListIsChanged
Возможно, существуют более "элегантные" решения (например, создание собственного класса, который вызывает событие только при добавлении элемента, а не при любом изменении списка), но таким образом он работает.