This was a problem I ran into with using MDI parents /children forms. You could open the same form over and over and it soon became a mess. The code below will check to see if it already exists and if it doesn't assign the new form as a child to the mdi parent form and open it.
Using the method
Code:
//Code that handles Child forms. May be adding more code to this down the road for customization.
//No need to write the same code for every form
private void CreateMDIChild(Form childForm)
{
//Checks if child form already exists. Only open if it does not exist in the collection
FormCollection allForms = Application.OpenForms;
bool formOpened = false; //Assume that this form does not already exist
foreach (Form frm in allForms)
{
if (frm.Name == childForm.Name)
{
//Tried to open form here however it throws an error about the collection being modified. So we create a bool and if the form exists
//set it to true
formOpened = true;
}
}
//As long as formOpened is false we can open the new form as a child form to the parent
if (formOpened == false)
{
childForm.MdiParent = this;
childForm.Show();
}
}
Using the method
Code:
private void loginRegisterToolStripMenuItem_Click(object sender, EventArgs e)
{
CreateMDIChild(new frm_LoginRegister());
}