Form1 gets a request to perform some action. Form1 sends the request to my business logic class. If there’s some error in the request, a notification is sent back to View1 and he presents an error message. If there is no error in the request, a new view must be created.
Who creates the new Form? Do I notify Form1 and have him create Form2? Does the business logic class call the Form2 constructor?
In the Model View Controller (MVC) design pattern the controller would create the new view. Using this paradigm the controller would receive the request from the view (i.e. Form1) and send it to the correct model (i.e. business logic class). Depending upon the results from the model the controller would either send a message back to Form1 or create a new view in Form2. This is a cleaner separation of concerns.