1. 程式人生 > >C# WinForm登陸窗體 限制使用者名稱只輸入字母 數字以及下劃線

C# WinForm登陸窗體 限制使用者名稱只輸入字母 數字以及下劃線

文字框的輸入限制,我們主要集中兩個問題:

一、怎樣限制使用者名稱輸入的長度?

答:設定txtName的屬性 MaxLength="10"; (我們這裡以10個字元為例)

二、怎樣限制使用者名稱只輸入字母 數字以及下劃線

答:有兩種方法可以實現

方法1:

//通過監聽鍵盤keychar實現privatevoid 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;
            }

        }

方法二:

//使用正則表達事匹配privatevoid 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,}$"