для добавления ко всем предыдущим ответам, событие является делегатом определенного типа. Делегат - это тип, который предназначен для того, чтобы действовать как «умный» указатель на функцию или, иначе говоря, как «умная» оболочка для указателя на функцию, которая позволяет компилятору интеллектуально определять во время компиляции, является ли функция ( s) вы придерживаетесь делегата в соответствии с тем, как вы используете делегата (согласованность основана на сигнатуре функции).
Событие - это делегат с определенной сигнатурой, в частности, тот, который ничего не возвращает (возвращает void) и принимает два параметра, System.object, для хранения ссылки на любой объект, вызвавший событие, и экземпляр некоторого типа, производного от System.EventArgs, для хранения любых других данных, которые событие должно передать вместе с инициатором в обработчик.