public static void ValidateDatumValue(object datum,
CancelEventArgs e,
ErrorProvider errorProvider,
Control control, object oValue)
{
uint ui = 0;
ulong ul = 0;
int i = 0;
long l = 0;
double d = 0;
DateTime dt;
String error = "";
String value = oValue != null ? oValue.ToString() : "";
if (datum is boolean && !Regex.IsMatch(value, "^[0-1]$"))
error = "Invalid Boolean Expression, must be 0 or 1";
else if (datum is hexadecimal && !Regex.IsMatch(value, "^[0-9A-Fa-f]+$"))
error = "Invalid Hexidecimal Expression, must be 0-9 or A-F or a-f";
else if (datum is octal && !Regex.IsMatch(value, "^[1-7][0-7]*$"))
error = "Invalid Octal Expression, must be 0-7 ";
else if (datum is unsignedInteger && !uint.TryParse(value, out ui))
error = "Invalid Unsigned Integer value";
else if (datum is unsignedLong && !ulong.TryParse(value, out ul))
error = "Invalid Unsigned Long value";
else if (datum is @long && !long.TryParse(value, out l))
error = "Invalid Long value";
else if (datum is @integer && !int.TryParse(value, out i))
error = "Invalid Integer value";
else if (datum is @double && !double.TryParse(value, out d))
error = "Invalid Double value";
else if (datum is dateTime && !DateTime.TryParse(value, out dt))
error = "Invalid Date value";
if (!String.IsNullOrEmpty(error) && e != null)
e.Cancel = true;
errorProvider.SetError(control, error);
}