• Hello Guest! Welcome to ConsoleCrunch, to help support our site check out the premium upgrades HERE! to get exclusive access to our hidden content.
  • Unable to load portions of the website...
    If you use an ad blocker addon, you should disable it because it interferes with several elements of the site and blocks more than just adverts.
  • Read Rules Before Posting Post Virus Scans with every program.

C# Allow only 1 instance of a form to be opened

1UP

Member
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:
  //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());
  }
 
General chit-chat
Help Users


      You do not have the permission to use the chat.
      @ QM|T_JinX: :weed:
      Back
      Top