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