Are you in a GridDataBoundGrid? If so, try catching the ValidateFailed event, and set the CurrentCell.ErrorMessage at that point.
As far as the CurrentCellValidating, is it being hit prior to the display of the messages you mentioned above. If so, if you directly validate the string (not relying on the grid to do so) in CurrentCellValidating, and then you can set CurrentCell.ErrorMessage to display a custom message.
Here is a little sample that requires you to enter an integer, and displays a custom message if you do not.