Вы можете сделать метод общим, например:
public void CreateMdiChildOrActivate<T>(ref T instance) where T : Form, new()
{
if (instance == null || instance.IsDisposed)
{
instance = new T();
instance.MdiParent = this;
instance.Show();
}
else
{
instance.Activate();
}
}
Использование:
private void studentsToolStripMenuItem1_Click(object sender, EventArgs e)
{
CreateMdiChildOrActivate(ref this.stu);
}
РЕДАКТИРОВАТЬ:
Если вы не 'Если вы хотите создать поле класса для каждой формы, вы можете сделать это следующим образом:
Создать поле словаря классов, содержащее открытую форму для каждого типа формы:
private Dictionary<Type,Form> openForms = new Dictionary<Type,Form>();
Затем изменитьпредыдущий метод:
public void CreateMdiChildOrActivate<T>() where T : Form, new()
{
Form instance;
openForms.TryGetValue(typeof(T), out instance);
if (instance == null || instance.IsDisposed)
{
instance = new T();
openForms[typeof(T)] = instance;
instance.MdiParent = this;
instance.Show();
}
else
{
instance.Activate();
}
}
Теперь вы можете назвать его так:
private void studentsToolStripMenuItem1_Click(object sender, EventArgs e)
{
CreateMdiChildOrActivate<Student>();
}