public void RefreshMementoMenus()
        {
            // Should update undo / redo menus in form's menu strip
            try
            {
                IMForm         child   = (IMForm)ActiveMdiChild;
                MementoManager manager = child.GetMementoManager();

                if (manager.hasUndo())
                {
                    undoMenuItem.Enabled = true;
                    undoMenuItem.Text    = "Undo " + manager.GetUndoDesc();
                }
                else
                {
                    undoMenuItem.Enabled = false;
                    undoMenuItem.Text    = "Undo";
                }

                if (manager.hasRedo())
                {
                    redoMenuItem.Enabled = true;
                    redoMenuItem.Text    = "Redo " + manager.GetRedoDesc();
                }
                else
                {
                    redoMenuItem.Enabled = false;
                    redoMenuItem.Text    = "Redo";
                }
            }
            catch (NullReferenceException)
            {
                // No active child yet; menus should be disabled
                undoMenuItem.Enabled = false;
                undoMenuItem.Text    = "Undo";
                redoMenuItem.Enabled = false;
                redoMenuItem.Text    = "Redo";
            }
            catch (InvalidCastException)
            {
                // Active Mdi Child is not an IMForm; disable menus
                undoMenuItem.Enabled = false;
                undoMenuItem.Text    = "Undo";
                redoMenuItem.Enabled = false;
                redoMenuItem.Text    = "Redo";
            }
        }
 private void redoMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         IMForm         child   = (IMForm)ActiveMdiChild;
         MementoManager manager = child.GetMementoManager();
         manager.Redo();
         child.RefreshValues();
     }
     catch (NullReferenceException)
     {
         // There is no child form yet
     }
     catch (InvalidCastException)
     {
         // Mdi child is not an IMForm
     }
 }