WinForm:一个登陆窗体引发的问题系列(二):用户名文本框的输入限制

在探讨文本框的输入限制时,我们主要集中两个问题:

一、怎样限制用户名输入的长度?

答:设置txtName的属性 MaxLength="10"; (我们这里以10个字符为例)

二、怎样限制用户名只输入字母 数字以及下划线

答:有两种方法可以实现

方法1:

       //通过监听键盘keychar实现
        private void txtName_KeyPress(object sender, KeyPressEventArgs e)
        {
            
this.txtName.ImeMode = ImeMode.Off;

            
if ((e.KeyChar >= '0' && e.KeyChar <= '9'|| (e.KeyChar >= 'A' && e.KeyChar <= 'Z'|| (e.KeyChar >= 'a' && e.KeyChar <= 'z'|| (e.KeyChar == 8|| (e.KeyChar == '_'))
            {
                e.Handled 
= false;
            }

            
else
            {
                MessageBox.Show(
"用户名只能为字母、数字和下划线!");
                e.Handled 
= true;
            }

        }

 

方法二:

 

        //使用正则表达事匹配
        private void txtName_KeyPress(object sender, KeyPressEventArgs e)
        {
            
this.txtName.ImeMode = ImeMode.Off;

            Regex reg 
= new Regex(@"^\w+$");        

            
if (this.txtName.Text != "")//要加上一个是否为空的判断
            {
                
if (reg.IsMatch(this.txtName.Text))
                {
                    e.Handled 
= false;
                }

                
else
                {                   
                    MessageBox.Show(
"用户名只能为字母、数字和下划线!");
                    e.Handled 
= true;
                }
            }
        }

 

对于这两种方法各有优劣,大家在实际应用中也会发现,第一种方法可以在输入前就限定用户输入不符合的字符,第二种方法是用户输入后再做的判断。文章后面附上一些常用的正则表达式,以方便大家使用:

只能输入数字:"^[0-9]*$"。
只能输入n位的数字:"^\d{n}$"。
只能输入至少n位的数字:"^\d{n,}$"。
只能输入m~n位的数字:。"^\d{m,n}$"
只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。
只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。
只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
只能输入非零的正整数:"^\+?[1-9][0-9]*$"。
只能输入非零的负整数:"^\-[1-9][]0-9"*$。
只能输入长度为3的字符:"^.{3}$"。
只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。
只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。
只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。
只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。
只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。
验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。
验证是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。
只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"

posted @ 2009-10-21 11:39  Jason.z  阅读(1202)  评论(0编辑  收藏  举报