I have never seen a detailed discussion of why this decision was made by the VB.NET team, but to be honest, I am trying my best to understand how this makes sense in terms of OOP design. Event handler methods usually should not do any work. Rather, they should turn to other methods to make a heavy lift. Another method they invoke will be the one that implements your interface.
But this is certainly possible if you do something like this:
Public MustInherit Class MyParentClass Protected WithEvents MyButton As Button Protected MustOverride Sub MySub() Handles MyButton.Click End Class Public Class MyDerivedClass : Inherits MyParentClass : Implements IMyInterface Protected Overrides Sub MySub() Implements IMyInterface.MyMethod ' Do something here... End Sub End Class
Also remember that event handler methods usually have a distinctive signature; sort of:
Public Sub MySub(ByVal sender As System.Object, ByVal e As System.EventArgs)
which is another reason why it would be extremely unusual for the event handler method to also implement the method defined in the interface.
source share