Я не знаю, что у тебя за класс такой и происходят ли у него на самом деле какие-либо события, но вот тебе пример, где оба способа работают вполне нормально:
- Код: Выделить всё
Public Class Form1
Private WithEvents pMyClass As New ClassWithEvents
Private pMyClass2 As New ClassWithEvents
Private Sub ClassWithEvents_MyEvent(ByVal Number As Integer) Handles pMyClass.MyEvent
MessageBox.Show("Event raised with number = " & Number)
End Sub
Private Sub btnEventRaiser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEventRaiser.Click
pMyClass.RaiseMyEvent(100)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
AddHandler pMyClass2.MyEvent, AddressOf ClassWithEvents_MyEvent
End Sub
Private Sub btnEventRaiser2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEventRaiser2.Click
pMyClass2.RaiseMyEvent(200)
End Sub
End Class
Public Class ClassWithEvents
Public Sub RaiseMyEvent(ByVal Number As Integer)
RaiseEvent MyEvent(Number)
End Sub
Public Event MyEvent(ByVal Number As Integer)
End Class
Код должен быть помещен в модуль формы, на форме должны лежать кнопки btnEventRaiser и btnEventRaiser2. Первая кнопка пинает событие для первого экземпляра класса, объявленного с ключевым словом WithEvents, вторая кнопка пинает событие для второго экзеспляра класса, который объявлен без WithEvents, но обработчик события добавлен при помощи AddHandler. Все работает как часы