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

나는이 코드를 사용하여 전화 번호의 텍스트 상자를 C#으로 확인하려고합니다. 사용자가 10 개의 숫자를 입력해야한다고 가정합니다. 그러나 올바르게 작동하지 않았습니다. 이 코드는 숫자와 문자를 허용합니다. & 숫자 만 허용하는 텍스트 상자의 유효성을 검사하려면 어떻게해야합니까? 텍스트 상자는 정확히 10 자리와 숫자 만 포함되어 있는지 확인하려면 ... 단순한 방법을 사용Windows Forms의 전화 번호 텍스트 상자의 유효성을 검사하려면 어떻게해야합니까?

+2

그래서 무엇이 잘못 되었나요? 길이 만 확인하고 싶니? – Sajeetharan

+1

''^ \ d {10} $ "'또는 정규 텍스트 상자 대신 마스크 된 텍스트 상자를 사용하는 정규 표현식을 사용해야합니다. –

+1

정의가 올바르게 작동하지 않았습니다. –

답변

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

은 ... 그리고 하나 개의 가능한 솔루션은 사용자가 체결 각 키를 캡처하는 것입니다 텍스트 상자. 누른 키가 숫자 또는 백 스페이스가 아닌 경우이 키를 무시하십시오. 숫자 키만 캡처하면 아래와 같은 텍스트 상자 KeyPressed 이벤트를 사용하여 캡처 할 수 있습니다. 아래 코드는 또한 10 자리 만 허용합니다. 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; 
     } 
    } 
    } 
} 

유일한 다른 가능한 문제가 올 수 있습니다. 텍스트 상자 Leave 이벤트를 연결해야합니다. 사용자가 정확히 10 자리 숫자를 입력하기 전에 텍스트 상자를 벗어나려고하면 아래 코드는 전화 번호가 10 자리가 아니라는 메시지를 표시 한 다음 전화 번호 텍스트 상자에 포커스를 BACK으로 설정합니다. 사용자는 텍스트를 지우고 필요한 경우 계속할 수 있지만 사용자는 9 자리 이하의 숫자를 입력하고 전화 번호 텍스트 상자를 남겨 둘 수 없습니다. 희망이 도움이됩니다.

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'라는 이름의 하나의'TextBox'를 사용합니다. 사실 두 사건없이 ... 그것은 설명대로 작동하지 않을 것입니다. – JohnG

관련 문제