VS2003和VS2005下文本框的只能输入数字类型的区别

博客展示了在VS2003和VS2005环境下,实现文本框只能输入数字类型的代码。包含全角转半角、键盘按键事件处理等功能,通过代码逻辑限制输入,如过滤非数字字符、处理全角数字等。
    前几天在做项目时,分别用03和05做,发现在判别文本框检验只能输入数字类型的数字时,在TextBox_KeyPress事件中e.keychar的属性有所区别,在VS2003下,是只读的,而在VS2005下是既可读又可写.所以在输入的数字是全角数字时,所处理的方法有所区别.现在把两种方法写下来:
VS2003下:       

 1Code#region Code
 2        //只能输入数字类型
 3        private void textBox2_KeyUp(object sender, KeyEventArgs e)
 4        {
 5            string old = textBox2.Text.Trim();
 6            textBox2.Text = ToDBC(old);
 7           
 8        }

 9        //全角转半角
10        public string ToDBC(string input)
11        {
12            char[] c = input.ToCharArray();
13            for (int i = 0; i < c.Length; i++)
14            {
15                if (c[i] == 12288)
16                {
17                    c[i] = (char)32;
18                    continue;
19                }

20                if (c[i] > 65280 && c[i] < 65375)
21                    c[i] = (char)(c[i] - 65248);
22            }

23            return new string(c);
24        }

25        //键盘按键事件
26        private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
27        {
28            string old = textBox2.Text.Trim();
29            if (!char.IsDigit(e.KeyChar))
30            {
31                e.Handled = true;
32                textBox2.Text = ToDBC(old);
33            }

34            //'\b'是退格键值
35            if (e.KeyChar == '\b' || e.KeyChar == '.')
36            {
37                e.Handled = false;
38            }

39        }

40        #endregion
       VS2005下:          
 1Code#region Code
 2        //只能输入数字
 3        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
 4        {
 5           
 6          if (!char.IsDigit(e.KeyChar))
 7            {
 8                e.Handled = true;
 9            }

10            //'\b'是退格键值
11            if (e.KeyChar == '\b') e.Handled = false;
12            switch (e.KeyChar)//处理全角字
13            {
14                case '':
15                    {
16                        e.KeyChar = '1';
17                        break;
18                    }

19                case '':
20                    {
21                        e.KeyChar = '2';
22                        break;
23                    }

24                case '':
25                    {
26                        e.KeyChar = '3';
27                        break;
28                    }

29                case '':
30                    {
31                        e.KeyChar = '4';
32                        break;
33                    }

34                case '':
35                    {
36                        e.KeyChar = '5';
37                        break;
38                    }

39                case '':
40                    {
41                        e.KeyChar = '6';
42                        break;
43                    }

44                case '':
45                    {
46                        e.KeyChar = '7';
47                        break;
48                    }

49                case '':
50                    {
51                        e.KeyChar = '8';
52                        break;
53                    }

54                case '':
55                    {
56                        e.KeyChar = '9';
57                        break;
58                    }

59                case '':
60                    {
61                        e.KeyChar = '0';
62                        break;
63                    }

64                defaultbreak;
65            }

66
67        }

68        #endregion
          相对来说,2005下,实现起来更容易一些.

转载于:https://www.cnblogs.com/yangjie5188/archive/2008/02/16/1070375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值