If your main concern is not leaving the cell when your user hits any of the arrow keys, you might be able to do it a little simpler using the CurrentCellMoving and just cancel the move if an arrow key was hit. (You could also use your selection code at this point to move the edit control cursor if you need to.)
Keys lastKeyCode = 0;
private void gridControl1_CurrentCellKeyDown(object sender, KeyEventArgs e)
{
lastKeyCode = e.KeyCode;
}
private void gridControl1_CurrentCellMoving(object sender, GridCurrentCellMovingEventArgs e)
{
if(lastKeyCode == Keys.Left || lastKeyCode == Keys.Right || lastKeyCode == Keys.Up || lastKeyCode == Keys.Down)
{
e.Cancel = true;
}
}