Событие может быть вызвано в классе, в котором оно объявлено. Сначала вы обычно хотите проверить, является ли ваше событие пустым.
if (MyEvent != null) MyEvent(this, new EventArgs());
Аргументы, которые вы передаете событию, будут зависеть от объявления события. Чтобы дать вам немного больше информации, событие - это просто трюк с компилятором. Когда такое событие, как
public event ChangedEventHandler Changed;
скомпилировано это будет выглядеть как
protected ChangedEventHandler _change;
public ChangedEventHandler Change
{
add { _change += value; }
remove { _change -= value; }
}
, поэтому все, что внутри объявлено, будет использовать _change
, а все, что снаружи будет использовать Change
. Другими словами, внутри, где он объявлен, это просто делегат, и применяются все нормальные правила.