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

来源:互联网 发布:法甲数据 编辑:程序博客网 时间:2024/05/17 05:10

//限制只能输入数值型
        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;
            }
        }