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 } }