Edit ... Didn't read it close enough. NM.
You'll need some central place to -know- where/who the forms are - a collection of some type. Maybe make it static for your form class. In the open method, have it scan that collection, and close the appropriate form, if it exists.
Old answer (incorrect):
Add an event handler to the formclosing or formclosed event, and instruct it to create and show a new form ... does that work?
<pseudo code>
function form1_closed(Object sender, EventArgs e ) {
new form1().Show();
}
</pseudo code>
Also, when you run the program, don't use the default main they provide. The main thread will crap out on you after the first form is closed. Instead, tell the first form to show, and the Application.Run(). However, you'll need to manage -when- to issue the exit command then.