/// <summary> /// Undoes the last stroke/action, if possible /// Recurses until a valid redo occurs or the redo stack is empty. /// </summary> public void Undo() { while (CM.UndoValid) { if (CM.Undo()) { break; } } InkChanged(false); }