Use CurrentCellValidating, but do not set e.Cancel = true.
GridCurrentCell cc = this.grid.CurrentCell;
GridCellRendererBase cr = cc.Renderer;
string newValue = cr.ControlText;
string oldValue = grid[cc.RowIndex, cc.ColIndex].Text;
if( NewValueIsWrong )
{
cr.Control.Text = oldvalue;
}