当用户使用事件在控件中float
键入内容时,我正在尝试实现一个函数来验证一个值。TextBox
KeyPress
这是我尝试过的:
private void ValidateFloat(object sender, KeyPressEventArgs e)
{
int b;
if (e.KeyChar == (char)Keys.Back ||
e.KeyChar == (char)Keys.Delete ||
e.KeyChar == (char)Keys.Left ||
e.KeyChar == (char)Keys.Right ||
int.TryParse(e.KeyChar.ToString(), out b))
{
TextBox obj = sender as TextBox;
if (e.KeyChar == '.' && obj.Text.IndexOf('.') > 0)
e.Handled = true;
else
e.Handled = false;
}
else
e.Handled = true;
}
private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
this.ValidateFloat(sender, e);
}
但是由于某种原因,这似乎有效但根本不起作用,请查看以下描述...
第一种情况:用户输入像20.5这样的数值
观察:
数字中已经有一个点作为小数分隔符。因此,当尝试再次按点键放置另一个时,验证工作正常。
第二种情况:用户输入类似..20.5的值
观察:
第一个数字不能是数值中的点。此外,还有不止一个点,并且验证无法正常工作。
所以,我的问题是...
如何修复上述代码以获得对float
值的真正良好验证?(没有“错误”)。