'Custom' modifier is not valid on events declared without explicit delegate types
Unlike a non-custom event, a Custom Event declaration requires an As clause following the event name that explicitly specifies the delegate type for the event.
Non-custom events can be defined either with an As clause and an explicit delegate type, or with a parameter list immediately following the event name.
Error ID: BC31122
To correct this error
Define a delegate with the same parameter list as the custom event.
For example, if the Custom Event was defined by Custom Event Test(ByVal sender As Object, ByVal i As Integer), then the corresponding delegate would be the following.
Delegate Sub TestDelegate(ByVal sender As Object, ByVal i As Integer)
Replace the parameter list of the custom event with an As clause specifying the delegate type.
Continuing with the example, Custom Event declaration would be rewritten as follows.
Custom Event Test As TestDelegate
Example
This example declares a Custom Event and specifies the required As clause with a delegate type.
Delegate Sub TestDelegate(ByVal sender As Object, ByVal i As Integer)
Custom Event Test As TestDelegate
AddHandler(ByVal value As TestDelegate)
' Code for adding an event handler goes here.
End AddHandler
RemoveHandler(ByVal value As TestDelegate)
' Code for removing an event handler goes here.
End RemoveHandler
RaiseEvent(ByVal sender As Object, ByVal i As Integer)
' Code for raising an event goes here.
End RaiseEvent
End Event