Эта сантехника уже существует, она используется для автоматического обновления списка окон MDI (свойство MenuStrip.MdiWindowListItem). Класс Form содержит код в методах OnVisibleChanged и OnMdiChildActivate для обновления меню. Но я надеюсь, что вы не увидите изменений в списке пунктов меню и не сможете переопределить ни один из этих кодов. Не без того, чтобы делать подобные и перегружать эти методы в ваших собственных дочерних формах.
Избавьтесь от этой проблемы, просто напишите в родительской форме MDI открытый метод, который вы последовательно используете для добавления новых дочерних окон:
public void AddChild(Form child) {
child.MdiParent = this;
child.FormClosed += child_FormClosed;
// Run your code to handle new child windows here...
}
private void child_FormClosed(object sender, FormClosedEventArgs e) {
// Your code to handle closed child windows here...
}
Вы даже можете сделать AddChild статическим, поскольку существует только один родительский элемент MDI.