public TextPoint Redo()
{
if (UndoStep >= UndoBuffer.Count)
return new TextPoint(-1, -1);
UndoBlockCollection ActionGroup = UndoBuffer[UndoStep];
UndoBlock undo = ActionGroup[0];
for (int i = 0; i < ActionGroup.Count; i++)
{
undo = ActionGroup[i];
switch (undo.Action)
{
case UndoAction.InsertRange:
{
InsertText(undo.Text, undo.Position.X, undo.Position.Y, false);
}
break;
case UndoAction.DeleteRange:
{
TextRange r = GetRangeFromText(undo.Text, undo.Position.X, undo.Position.Y);
DeleteRange(r, false);
}
break;
default:
break;
}
}
TextRange ran = GetRangeFromText(undo.Text, undo.Position.X, undo.Position.Y);
UndoStep++;
ResetVisibleRows();
OnUndoBufferChanged();
return new TextPoint(ran.LastColumn, ran.LastRow);
}