You could use a singleton pattern to ensure that only one instance exists, but I think that it would be easier just to loop through
Application.OpenForms Property (System.Windows.Forms)[
^].
Loop through the collection, check if the form exists and if it does, activate it, if it doesn't, create it.
[EDIT]
An example loop to iterate through the forms
bool formOpen = false;
foreach (Form form in Application.OpenForms) {
if (form.Name == "Form1") {
formOpen = true;
break;
}
}
if (formOpen) {
MessageBox.Show("Form is already open");
} else {
MessageBox.Show("Form is not open");
}