Поскольку события могут вызываться только из класса, который их объявил, ваш производный класс не может напрямую вызывать события, объявленные в базовом классе.
Вы можете достичь желаемого, создав защищенный метод вызова для события. Вызывая этот вызывающий метод, ваш производный класс может вызвать событие.
Для еще большей гибкости вызывающий метод часто объявляется как виртуальный, что позволяет производному классу переопределять его. Это позволяет производному классу перехватывать события, которые вызывает базовый класс, возможно, выполняя их собственную обработку.
Вы можете сделать:
protected void OnFrobbing(EventArgs e)
{
var handler = Frobbing;
if (handler != null)
handler(this, new e);
}
Или:
protected virtual void OnFrobbing(EventArgs e)
{
var handler = Frobbing;
if (handler != null)
handler(this, new e);
}