【发布时间】:2013-03-15 22:34:36
【问题描述】:
当用户使用KeyPress 事件在TextBox 控件中键入内容时,我正在尝试实现一个函数来验证float 值。
这是我尝试过的:
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 值进行真正良好的验证?(没有“错误”)。
【问题讨论】:
标签: c# .net winforms validation keypress