There are a couple of ways:
You could keep a reference to it in your current form class, and check that:
private MyForm myForm = null;
private void OpenNewMyFormInstance()
{
if (myForm == null)
{
myForm = new MyForm();
myForm.FormClosed += new FormClosedEventHandler(myForm_FormClosed);
myForm.Show();
}
}
void myForm_FormClosed(object sender, FormClosedEventArgs e)
{
myForm = null;
}
You need to handle the FormClosed event to register that the user closed it.
Or, you could check for an existing instance:
bool isMyFormOpen = false;
foreach (Form f in Application.OpenForms)
{
if (f is MyForm)
{
isMyFormOpen = true;
break;
}
}
if (!isMyFormOpen)
{
MyForm f = new MyForm();
f.Show();
}
Me? I'd keep the reference, because I might want to use it for something else.