繁体   English   中英

TextBox验证,带符号的整数

[英]TextBox validating, integer with symbol

我想限制用户只能在文本框中键入整数(而不是双精度)并使用符号"," 我已经尝试过此代码,但是当我尝试清除错误的输入时,它总是在消息框上弹出。

if (!System.Text.RegularExpressions.Regex.IsMatch(textBox4.Text, @"^[0-9,-Key.Back]"))
{
    MessageBox.Show("This textbox accepts only alphabetical characters");
    //textBox4.Text.Remove(textBox4.Text.Length - 1);
    //textBox4.Clear();
}

请帮忙。

我猜您正在TextChanged事件处理程序中运行代码。 问题出在你的正则表达式上。 你说你需要允许数字和逗号,但如果有数字要检查, , ,一些范围之间,K一些字母(和ey ,等), 在该字符串的开头文字点。

我想你想修复它像

if (!System.Text.RegularExpressions.Regex.IsMatch(textBox1.Text, @"^[0-9,]*$"))
{
    MessageBox.Show("Please enter only numbers and commas.");
}

当整个输入从头到尾包含数字和逗号时^[0-9,]*$正则表达式将返回true。

如果您需要允许只是整数,作为小数点分隔符,使用

^\d+(?:,\d+)?$

如果你想允许用全整数,作为数字分组(千个分隔符)的符号,使用

^\d{1,3}(?:,\d{3})*$

要处理Key.Back键,您需要在KeyDown / KeyPress事件处理程序中实现所需的行为,请参阅如何确定是否在KeyPress事件中按下了Backspace?

尝试这个:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != ',' && e.KeyChar != (char)Keys.Back)
    {
        e.Handled = true;
        MessageBox.Show("Digits, commas and backspace only");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM