By what you say I suppose you have a reference in Form1 to Form2, something like:
class Form1 : Form
{
...
Form2 RefToForm2 = new Form2();
...
private void ButtonToShowForm2_Clicked(...)
{
RefToForm2.Show();
}
...
}
Now, as Dave said in his answer, you can use e.Cancel = true to avoid automatic disposal of Form2, but I think you should first consider if you need your instance of Form2 to stay in memory or you can simply create a new instance every time you need to show Form2. The latter is usually the best practice. So, if you store some value in Form2 and you don't want to lose it, you should store it somewhere else and recover it when you load Form2. Then, you can simply do:
class Form1 : Form
{
...
private void ButtonToShowForm2_Clicked(...)
{
Form2 RefToForm2 = Application.OpenForms["Form2"];
if (RefToForm2 == null) RefToForm2 = new Form2();
RefToForm2.Show();
RefToForm2.Activate();
}
...
}
Or something similar. Hope this can help. :)
2+2=5 for very large amounts of 2 (always loved that one hehe!)