C# Allow only 1 ins...
 
Notifications
Clear all

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


1UP
Posts: 25
 1UP
Topic starter
(@1UP)
Eminent Member
Joined: 10 years ago

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());
	  }
	
Reply
Name of the Video Game, and any other Tags