It's important to note here that your MainForm is likely your application host. Have a look in your Program.cs file and see the code that's written there. This is autogenerated by Visual Studio 2005 and up and this file hosts your application's entry point. There's typically a line in there that reads as such...
- Application.Run(new MainForm());
So this means when MainForm closes, your application closes. To get around this, you have two options...
1) Your MainForm is always "alive". You never close it (call the Close method) but instead hide it with the Hide method. You can then use the Show method to restore it at a later time. Your child forms will need a way to tell the parent form to restore itself and you have many options for this and should check out Curtis Rutland's insight on the topic:
http://bytes.com/topic/c-sharp/insig...ny-other-forms. Use this if it's ok for your MainForm object to persist.
2) Instead of MainForm driving your application, have another class/form handle it that's more transparent to the user. This acts as a host that will essentially direct traffic, showing the form that's appropriate to be visible. This will let you close all your forms and re-open them and allow your application to continue running. Use this if you absolutely need to create/destroy your MainForm object.
I hope that helps. Please feel free to post back if you have more questions :)