Нет ничего плохого в том, что у вас есть код. Вы можете сделать его СУХИМ с небольшим количеством отражения:
public Form CreateMdiChild(Type type, bool singleton) {
if (singleton) {
foreach (var child in this.MdiChildren) {
if (child.GetType() == type) {
child.WindowState = FormWindowState.Normal;
child.Show();
child.Activate();
return child;
}
}
}
Form form = (Form)Activator.CreateInstance(type);
form.MdiParent = this;
form.Show();
return form;
}
Использование:
CreateMdiChild(typeof(Students), true);