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.
//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
private void loginRegisterToolStripMenuItem_Click(object sender, EventArgs e) { CreateMDIChild(new frm_LoginRegister()); }