public void SetColor(int index, Color newValue) { UndoAction CreateUndoAction(Color oldVal) { return(delegate(out UndoAction redo) { redo = CreateUndoAction(_colors[index]); _colors[index] = oldVal; }); } _undoManager.AddModification("Modify palette.", CreateUndoAction(_colors[index])); _colors[index] = newValue; }