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,}$"

你可能感兴趣的:(WinForm)