Try this.
1) Comment out the ProcessKeyPreview override.
2) In the MoveToNextCell override, there is an if-statement that starts if(!b1). Add an else clause as here:
if(!b1)
{
.....
}
else
{
this.CurrentCell.MoveTo(row, col,
GridSetCurrentCellOptions.ScrollInView);
b = true;
}