Я обнаружил, что событие, вызванное (непосредственно косвенно) в конструкторе, не может быть обработано вне самого класса. Чтобы доказать, что это была настоящая проблема, я написал простое примерное приложение.
Класс с событием:
Namespace Utils
Public Class A
Public Event Test()
Public Sub New()
CallTest()
End Sub
Public Sub MakeACall()
CallTest()
End Sub
Private Sub CallTest()
RaiseEvent Test()
End Sub
End Class
End Namespace
Основная форма (обработка события правильно):
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
m_A.MakeACall()
End Sub
Private Sub HandleTest() Handles m_A.Test
MsgBox("ta-dah!")
End Sub
Protected WithEvents m_A As New Utils.A()
End Class
Основная форма (НЕ обрабатывает событие должным образом):
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
m_A = New Utils.A()
End Sub
Private Sub HandleTest() Handles m_A.Test
MsgBox("ta-dah!")
End Sub
Protected WithEvents m_A As Utils.A
End Class
Причина такого поведения стала совершенно очевидной после написания этих произведений, но, может быть, есть способ ее опустить?