限制只能输入数值型的高级方法

本文介绍了一种使用C#实现的限制文本框中只能输入数值的方法,包括正数、负数及小数的输入控制。通过KeyPress事件处理程序,有效阻止了非数值字符的输入,确保了数据的有效性和一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//限制只能输入数值型
        private void Amount_KeyPress(object sender, KeyPressEventArgs e)
        {

            // 高级方法:(打破了很多限制,自己去体会和KeyDown、KeyUp的区别和联系)
            //e.KeyChar的值可以与十进制或十六进制的值对应,但显示出来的e.KeyChar.Tostring()为非ASCALL码值
            //更改过得方法可以使用键盘上的字符来操作,eg:Ctrl+C
            //0为十进制,(char)0 表ASCALL码的NULL,等价与十六进制的00


            if (e.KeyChar == 0x20) e.KeyChar = (char)0;                             //禁止空格键,0x20为十六进制的空格表示,或换成十进制的32亦可
            if ((e.KeyChar == 0x2D) && (((TextBox)sender).Text.Length == 0)) return;              //处理负数,同上0x2D(为'-'),转化为十进制为45
            if (e.KeyChar > 0x20)                                         //其他小于32的字符(符号)不处理,即不触发e.Handel=True,或写成e.KeyChar > 32
            {
                MessageBox.Show(e.KeyChar.ToString());
                try
                {
                    Convert.ToDouble(((TextBox)sender).Text + e.KeyChar.ToString());
                }
                catch
                {
                    e.KeyChar = (char)0;           //处理非法字符
                }
            }          

 

           //中级方法:(缺点,不能使用键盘上得Ctrl+C等来操作)

            if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 46 && e.KeyChar != 8)
            {
                e.Handled = true;
            }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值