2017-04-15 52 views
-5
if(textBox1.TextLength !=10) 
{ 
    MessageBox.Show("Wrong Telephone No Please check it again", 
        "ERROR",MessageBoxButtons.OK,MessageBoxIcon.Information); 
} 

我試着驗證c#中的電話號碼的文本框中的代碼。我假設用戶必須輸入10個數字。但這種方式無法正常工作。此代碼允許數字和字符。我如何驗證僅允許10位數&的數字的文本框。如何驗證Windows窗體中電話號碼的文本框?

+2

那麼這有什麼問題呢?你只想檢查一下長度嗎? – Sajeetharan

+1

您應該使用以下模式的正則表達式:'「^ \ d {10} $」'或使用蒙版文本框而不是常規文本框。 –

+1

Define無法正常工作 –

回答

0

使用正則表達式

MatchCollection mc = Regex.Matches(TextBox.Text,@"\(?\d{3}\)?-? *\d{3}-? *-?\d{4}"); 

int noOfMatches = mc.Count; 

if(mc>0) 
{ 
valid condtion logic 
} 
else 
{not valid logic 
} 
1

使用簡單的方法......爲了確保文本框中只包含10位和全數字......那麼一個可能的解決辦法是捕捉用戶進入的每個鍵文本框。如果按下的鍵不是數字或退格鍵,則簡單地忽略此鍵。只能捕獲數字鍵可以使用文本框KeyPressed事件來完成,如下所示。下面的代碼也只允許10位數字。如果輸入的數字超過10位,則簡單地忽略它們。可能會

private void txtPhoneNumber_KeyPress(object sender, KeyPressEventArgs e) { 
    if (!Char.IsDigit(e.KeyChar) && (e.KeyChar != (char)(Keys.Back))) { 
    e.Handled = true; 
    } 
    else { 
    // is a digit or backspace - ignore digits if length is alreay 10 - allow backspace 
    if (Char.IsDigit(e.KeyChar)) { 
     if (txtPhoneNumber.Text.Length > 9) { 
     e.Handled = true; 
     } 
    } 
    } 
} 

唯一其他可能的問題,當用戶輸入1位數以上,但小於10個數字,並試圖通過點擊另一個控制離開文本框。在這裏,我們需要連線文本框Leave事件。如果用戶在輸入正好十位數字之前試圖離開文本框,下面的代碼將提示用戶電話號碼不是十位數字,然後將焦點BACK設置爲電話號碼文本框。用戶可以清除文本並在必要時繼續,但用戶將無法輸入九個或更少的數字並保留電話號碼文本框。希望這可以幫助。

private void txtPhoneNumber_Leave(object sender, EventArgs e) { 
    if ((txtPhoneNumber.Text.Length < 10) && (txtPhoneNumber.Text.Length > 0)) { 
    MessageBox.Show("Phone number must be 10 digits!"); 
    txtPhoneNumber.Focus(); 
    } 
} 
+0

我可以使用這兩個事件來驗證一個文本框嗎? –

+0

是的。發佈的代碼使用名爲'txtPhoneNumber'的ONE'TextBox'。事實上,如果沒有這兩個事件......它不會像描述的那樣工作。 – JohnG