Я никогда не видел подробного обсуждения , почему это решение было принято командой VB.NET, но, честно говоря, я изо всех сил пытаюсь понять, как это имеет смысл с точки зрения разработки ООП.Методы обработчика событий обычно не должны выполнять какую-либо работу.Скорее, они должны вызывать другие методы для выполнения тяжелой работы.Другой метод, к которому они обращаются, это тот, который реализует ваш интерфейс.
Но это, безусловно, достижимо, если вы сделаете что-то вроде этого:
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
Также помните, что методы обработчика событий обычноиметь отличительную подпись;что-то вроде:
Public Sub MySub(ByVal sender As System.Object, ByVal e As System.EventArgs)
, что является еще одной причиной, по которой для метода-обработчика событий было бы крайне редко также иметь возможность реализовать метод, определенный в интерфейсе.