如何限制Text文本框只能显示输入的数字

    在练手的小程序中,需要输入数字作为一个运算参数。键盘输入的数字在程序中相当于字符串,需要进行转化。所以就想像计算器那样,只能显示输入的数字字符和小数点字符。

    这就需要用到一点正则表达式和text文本编辑的行为属性。

    首先,在选择的text文本框中,选择”KeyPress“行为。

    

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= 'a' && e.KeyChar <= 'z') || (e.KeyChar >= 'A' && e.KeyChar <= 'Z')
                || (e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar == 8) || e.KeyChar == '.')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

    其次,添加使用正则表达式的命名空间。

    在开头的位置,加入

using System.Text.RegularExpressions;
    然后双击文本框,进入编辑textchanged。

    var reg = new Regex("^[0-9]*(\\.)?[0-9]*$");  这里首次使用正则表达式。

    Regex()表示正则表达式的新实例,""中的内容为表达式过滤或选择的内容

    ^表示开始位置,$表示结束

    [0-9]表示第一位是数字0-9;*表示*号前的表达式若干次;

    ”\\.“其实是选择小数点。因为”.“在正则表达式中表示任意字符,需要加”\“进行标注,而”\“本身也是有特殊意义的,所以就需要”\\.“。后面的?表示?号前的项目0次或1次。

    之后的[0-9]*与一开始的相同。

        public void textBox1_TextChanged(object sender, EventArgs e)//质量
        {
            var reg = new Regex("^[0-9]*(\\.)?[0-9]*$");
            var str = textBox1.Text.Trim();//去除所有前导空白字符和尾部空白字符
            var sb = new StringBuilder();//新建一个字符实例,用于承接我所需要的全部是数字字符的字符串
            if (!reg.IsMatch(str))//
            {
                for (int i = 0; i < str.Length; i++)
                {
                    if (reg.IsMatch(str[i].ToString()))
                    {
                        sb.Append(str[i].ToString());
                    }
                }//遍历输入的字符串,将符合要求的字符加入新建的sb字符串中
                textBox1.Text = sb.ToString();//令文本框中的文本为符合我要求的文本
                textBox1.SelectionStart = textBox1.Text.Length;
            }
        }
    textbox1文本框就只能输入数字字符了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值