I think view inheritance will be your friend in this pursuit. You should think about the most basic operations that all views will need to share. For example, if its is a database app then you may conceivably have methods or events such as:
BeforeInsert
AfterInsert
BeforeUpdate
AfterUpdate
BeforeCancel
AfterCancel
OnError
...
...
For view switching your basic operations could be:
OnViewLoad
OnViewUnload
Validate
...
Then I would place all that code in a generic manner into a base view BaseView class. After you have a base view then you can make all normal views inherit the BaseView's functionality. You can further this model by creating a BaseDataView:BaseView in which you introduce your generic database UI operations such as validation.
Your main form could then primarly work with the base or super class such as ((BaseView)currentView).ValidateForm() and so on and so fourth.