这里对于输入数字限定只包含数字、负号、小数点这三种。
首先对于不符合以上三种的字符在TextBox的KeyPress事件代码里过滤掉:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != '\b' && !Char.IsDigit(e.KeyChar)&&(e.KeyChar!='.')&&e.KeyChar!='-')
{
e.Handled = true;
}
}
后续的格式验证我能想到的只能通过在提交数据后验证了,不知道还有没其它更好的方法,欢迎指点。Button提交的代码如下:
private void button1_Click(object sender, EventArgs e)
{
string checkValue = textBox1.Text;
int countNegative = 0;
int countDot = 0;
foreach (var c in checkValue)
{
if (c == '-')
countNegative++;
if (c == '.')
countDot++;
}
if (countDot > 1 || countNegative > 1)//判断负号和小数点是否多于1个
{
MessageBox.Show("输入的数字格式有误,请重新输入!");
return;
}
if (checkValue.Contains('-') && checkValue.IndexOf('-') != 0)//判断负号是否位于字符串首位
{
MessageBox.Show("负号格式有误,请重新输入!");
return;
}
if ((checkValue.Contains('.') && checkValue.IndexOf('.') == 0) || checkValue.IndexOf('.') == checkValue.Length-1)//判断小数点是否位于字符串首位或末尾。
{
MessageBox.Show("小数点格式有误,请重新输入!");
return;
}
if (checkValue.Contains('-') && checkValue.Contains('.') && checkValue.IndexOf('-') == 0 && checkValue.IndexOf('.') == 1)//如同时包括两种符号,判断是否连在一起
{
MessageBox.Show("小数点格式有误,请重新输入!");
return;
}
MessageBox.Show(checkValue);
}
可能出现的情况应该都有考虑到了,不知道还有遗漏没。
以上有参考了http://blog.csdn.net/hjingtao/article/details/7302448
如有更好的验证方法,欢迎指点。