文本框中的十进制值

时间:2014-01-29 09:41:30

标签: c# regex

我需要在文本框中只允许gps坐标值,格式为2位数,然后是小数点,小数点后5位数。例如。 “28.98706”。

我怎样才能做到这一点?如果有人能解释使用正则表达式和正则表达式之间的区别,我也很感激。

3 个答案:

答案 0 :(得分:4)

不要使用文本框。改为使用NumericUpDown - 它以十进制格式存储值,允许您设置小数点精度。

同样是regex =正则表达式。

答案 1 :(得分:1)

可能numericUpDown会更好。但是这里有一个TextBox的可能解决方案:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
   if (char.IsControl(e.KeyChar)) return;

   if (e.KeyChar == '.' && textBox1.Text.Length < 2) e.Handled = true;

   if (!char.IsDigit(e.KeyChar) && e.KeyChar != '.') e.Handled = true; // check for non-digit character

   if (textBox1.Text.Length == 2 && e.KeyChar != '.') e.Handled = true; // you should type dot '.'

   if (textBox1.Text.Length == 8) e.Handled = true;
}

答案 2 :(得分:0)

正则表达式和正则表达式是一回事。使用它来验证用户对允许值模式的输入。

示例:

if(!Regex.IsMatch("[0-9]+\.?[0-9]*", TextBox.Text)) 
    return false;

return true;