You have to create a object Form as global variable - so it can be accessed from every place in the class, and there where you want to open it, simple create a new instance of the Form object and open it:

Thanks to all,
Mitja,
Your example shows where I was going wrong. I was calling a new form globally rather than creating a global variable. If I understand your point, button1 creates a new form shows it and when the form is closed, button2 creates the next instance etc.

later in code called - which is the first time the form is called
Form newF = new Form();
WRONG!
Why you have again Create a new variable?
Take a look into my exampe, and do:

As a global definition

Form newF;

later in code called - which is the first time the form is called
newF = new Form();

ONE MORE THING: Why is the name of your form "Form"? This is impossible, becase Form is the Reserved word! It can be FormX, but never just a form. If you look on the top of the code edior in the namespace, there is written:

public partial class Form1 : Form //OK!
{
//Form is a reserved word!!
}
//and you can NOT write this way:
public partial class Form : Form //this is WRONG!
{
}

-----------------------------------------------------------------------
2nd: It never good to do this kind of coding over forms. This code you can do on the constructor of the "newF", not from main form. For changing the form. you can pass values you need to pass from Main to NewForm. you can do: