There is no need for you to use the delegates directly. If you are not familiar with a delegate, it is basically an emissary between two different process or threads. Any of our events that may have potential interaction with objects on another thread use the delegate...which is what you saw here. This allows us to Invoke off of a synchronizing thread which will prevent illegal cross thread violations. Just calling the RaiseEvent method will lead to bad mojo
when threads or other delegates are involved...so it is always best to create events that talk "outside" of itself to talk through a delegate and invoke off of a synchronizing object.
Also, you can just set the CurrentPage of the wizard control as well:
MyWizardControl.CurrentPage = MyWizardPage