Methode zum Aufruf von Mdi-Child Forms

Oft genug stand ich vor dem „Problem“ Fenster innerhalb eines Mdi-Containers korrekt zu öffnen. Mit ein wenig Hilfe aus dem Internet habe ich mir dann eine Methode geschrieben, die es mir erlaubt verschiedene Typen von Fenstern aufzurufen geregelt.
Die Methode überprüft zuerst (falls gewünscht), ob bereits ein Fenster vom gleichen Typ geöffnet ist. In diesem Fall wird der Fokus auf das Fenster gelegt. Andernfalls, wenn kein Fenster vom gleichen Typ existiert wird ein neues erstellt.

Methode:

/// <summary>
/// Open (new) Mdi Child
/// </summary>
/// <param name="mdiParent">Mdi Parent Form of the (new) Mdi Child</param>
/// <param name="typeOfChild">Type of the (new) Mdi Child</param>
/// <param name="windowstate">Windowstate to set for the (new) Mdi Child</param>
/// <param name="startposition">Startposition to set for the (new) Mdi Child</param>
/// <param name="allowMultipleInstances">Set true, if you want to create a new Form</param>
private void openMdiChild(Form mdiParent, Type typeOfChild, FormWindowState windowstate, FormStartPosition startposition, bool allowMultipleInstances)
{
	Form newForm = null;

	foreach (Form x in this.MdiChildren)
	{
		if (x.GetType() == typeOfChild)
		{
			newForm = x;
		}
	}

	if (newForm == null
		|| allowMultipleInstances)
	{
		Assembly ass = Assembly.GetAssembly(typeOfChild);
		newForm = (Form)ass.CreateInstance(typeOfChild.FullName);
	}

	newForm.MdiParent = mdiParent;
	newForm.StartPosition = startposition;
	newForm.Show();
	newForm.WindowState = windowstate; // Set WindowState after then .Show() to fix the MDI Container icon bug
	newForm.Focus();
}

Aufruf:

this.openMdiChild(this, typeof(FrmInetLoader), 
    FormWindowState.Maximized, FormStartPosition.CenterParent, true);