Well, the first point is that you define your own naming convention and there is no 'wrong' way to do it (as long as it's consistent).
Having said that, the Microsoft standards are good if your sharing your code with other.
Normally, you would have events names as:
public class Car
{
// is event named correctly?
public event EventHandler<EventArgs> SomethingHasHappened;
private void MoveForward()
{
OnSomethingHasHappened();
}
// is the named correctly
protected virtual void OnSomethingHasHappened()
{
EventHandler<EventArgs> locum = SomethingHasHappened;
if(locum!= null)
{
locum(this, new EventArgs());
}
}
}
Note that the event is titled without the 'On' prefix, and the event firing method is named with the 'On' prefix.
The event firing method is also protected virtual
so that derived classes can override to change/add to the behaviour as well as use it to fire the event themselves when required.