2015-05-14 2 views
-1

У меня проблемы с событиями нажатия клавиш.Событие Keypress не работает должным образом

Когда я ввожу 10 цифр в текстовое поле 1, мне нужно 10 цифр. Но теперь, если я нажимаю backspace, он показывает сообщение «Вы не можете ввести более десяти цифр». Это моя первая проблема.

Вторая проблема заключается в том, что когда я очищаю текстовое поле1, нажимая назад, а теперь снова вводим цифры, он принимает только 9 цифр.

Скажите, пожалуйста, что происходит не так с моим кодом:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (textBox1.Text.Trim().Length > 9) 
    { 
     MessageBox.Show("You can't enter more than ten digits..."); 
     textBox1.MaxLength = 9; 

    } 
} 
+1

почему вы меняете MaxLength в поле ввода? в строке 6 textBox1.MaxLength = 9; – Jimmy

+3

Вы должны проверить длину в событии keyup, которое после нажатия клавиши и нажатия клавиши – mggSoft

+0

Требуется всего 9 цифр, потому что вы устанавливаете текстовое поле max length 'textBox1.MaxLength = 9;' удаляете это, чтобы избежать второй проблемы. –

ответ

1

Вы можете проверить, если KeyChar является забой:

if (e.KeyChar != '\b' && textBox1.Text.Trim().Length > 9) 
{ 
    e.Handled = true; 
    MessageBox.Show("You can't enter more than ten digits..."); 
} 
+0

спасибо, этот код немного помог. первая проблема решена, а вторая - как есть. – Mahaveer

+0

@Mahaveer вы удалили это: * textBox1.MaxLength = 9; *? Также вы должны вызвать этот код в событии KeyPress. Меня устраивает. –

+0

Спасибо Вано Майсурадзе. но вы внимательно прочитали мой код. Я вызвал событие нажатия клавиши. и если я удалю maxlength, текстовое поле займет более 10 цифр, которые я не хочу – Mahaveer

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