События - это специальный тип делегата (Ссылка на метод или функцию) которая исполняется при каком-то действии
Для создания события для baseBlock (Если это пользовательский класс), нужно в этом классе описать делегат, который будет принимать необходимые параметры, типа sender и RountedEventArgs.
Далее в классе нужно описать экземпляр на этот делегат, типа так:
public delegate returnValue DelegateName(Params param);
event DelegateName eventHandlerName;
Далее, сама суть в том, что при выполнении некоторых действий, по типу, когда вызывается какой-то метод, допусти, для вывода состояния объекта либо класса, тогда в этом методе должно вызываться это событие, так как оно будет указывать на то, что был вызван именно этот метод.
Суть событий как раз таки в том, что бы отслеживать вызов методов и всё. Этот делегат должен инициализироваться снаружи класса, т.е., то, что будет делаться при вызове события, будет определяться непосредственно пользователем, так как и с обычными событиями для Click, когда действия, которые будут выполняться, определяет именно программист.
Для более детального изучения (Если метанит, значит метанит )) ) ссылку прилагаю ниже
https://metanit.com/sharp/tutorial/3.14.php