2014-02-11 3 views
1

사용자 입력 (키 누르기 이벤트)을 기반으로 텍스트 상자에 대한 유효성을 검사하고 싶습니다. 내 텍스트 상자의 최대 길이를 3 자로 설정했습니다. 사용자가 입력 한 첫 번째 문자는 문자 (a-z)이어야하며 이어지는 두 문자는 숫자 여야합니다. 백 스페이스가 허용됩니다. 지금까지 나는 ..TextBox Keypress 이벤트 유효성 검사

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      countChar = this.textBox1.Text; 
      if (String.IsNullOrEmpty(this.textBox1.Text)) 
      { 
       e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back); 
      } 
      else if (countChar.Length == 1) 
      { 
       e.Handled = e.KeyChar == (char)Keys.Back; 
      } 
      else if (countChar.Length == 2 || countChar.Length == 3) 
      { 
       e.Handled = e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == (char)8; 
      } 
    } 

어떤 제안이 코드를 가지고 있지만 내가 원하는 것대로 작동하지 않습니다?

+0

당신이 "작동하지 않습니다"에 정교하게 될까요 일을해야합니까? 그건 정말 우리에게별로 알려주지 않습니다. 컴파일 오류? 런타임 예외? 예상치 못한 동작입니까? 동작이 예기치 않은 경우이를 파악하는 가장 좋은 방법은 코드를 단계별로 실행하는 것입니다. 우리는 그렇게 할 수 없다. – tnw

+0

또한, 텍스트 상자의 내용을 검증하기 위해 일부 정규식을 사용하는 것이 좋습니다. 모든 단일 키를 검증하는 것보다 쉽습니다. – tnw

+0

아, 미안 해요, 방금 예기치 못한 행동을했습니다. 텍스트 상자에 첫 번째 문자를 입력 할 때 문자가 아니라 숫자 인 경우이를 수용합니다. 그러나 텍스트 상자에 두 번째 문자를 입력 할 때 문자 또는 숫자인지 여부를 받아들이지 않습니다. 나는 코드를 단계별로 시도했지만 여전히 혼란 스럽다. 내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다. – user3233787

답변

0

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     countChar = this.textBox1.Text; 

     if (String.IsNullOrEmpty(this.textBox1.Text)) 
     { 
      e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back); 
     } 
     else if (countChar.Length == 1 || countChar.Length == 2) 
     { 
      e.Handled = !(char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back); 
     } 
     else if (countChar.Length == 3) 
     { 
      e.Handled = e.KeyChar != (char)Keys.Back; 
     } 
     else 
     { 
      e.Handled = true; 
     } 
    } 
0
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     countChar = this.textBox1.Text; 
     if (String.IsNullOrEmpty(this.textBox1.Text)) 
     { 
      e.Handled = (char.IsLetter(e.KeyChar); 
     } 
     else if (countChar.Length == 1 || countChar.Length == 2) 
     { 
      e.Handled = e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == (char)8; 
     } 
     e.Handled=false; 
    } 
+0

이 코드를 설명하고 싶을 수도 있습니다 ... – tnw

+0

첫 번째 문자 글 상자는 아직 비어 있습니다. 그래서 처음에는 그것을 확인할 수 있습니다. 2 다음 문자에 대한 텍스트 길이가 1 또는 2입니다. 그렇지 않으면 입력 문자가 올바르지 않습니다. –

+0

죄송합니다. 원하는대로 작동하지 않습니다. – user3233787

관련 문제