Hi,
Very good approach.
Just want to add some comments that will simplify the code for someone who just need to update the text of any menu in 'Window' for opened MDI child forms. If you do not require to have any other menus or separators in 'Window' you can use this code in your MDI container form:

This is C# code but you can converted using this tool:
http://www.developerfusion.com/tools.../vb-to-csharp/

Code:
            /// <summary>
            /// DropDownOpening event handler
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void mnuMainWindow_DropDownOpening(object sender, EventArgs e)
            {
               //update item in window list
               this.RefreshWindowList();
            }



            /// <summary>
            /// Helper subroutine to update menu in Window menu
            /// </summary>
            private void RefreshWindowList()
            { 
               
                //Active form
                Form frmActiveForm;
                //Get active mdi form
                frmActiveForm = this.ActiveMdiChild;

             
                //itterate through dropdownitems
                foreach (ToolStripMenuItem item in mnuMainWindow.DropDownItems)
                {
                    //if item is being checked - the latest mdi form has been opened
                    if (item.Checked)
                        item.Text = frmActiveForm.Text;
                 
                }

            }