2014-02-11 5 views
1

Я хотел бы получить подтверждение в своем текстовом поле на основе ввода пользователей (событие нажатия клавиши). Я установил максимальную длину текстового поля на 3 символа. Первым символом, введенным пользователем, должен быть символ (от a-z), а затем два следующих символа должны быть числом. Возврат разрешен. Пока у меня есть этот код, но он не работает, как хотелось бы.Проверка события нажатия клавиш TextBox

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

Смежные вопросы