2016-09-26 2 views
2

Я хочу спросить, когда iam использует событие keydown с подсчетом длины текста, он не совпадает. но когда я нажимаю enter или backspace, он становится 9. есть способ сделать это с начала отсчета от 1 вместо 0.keydown событие не может получить точную длину

код я использую

private void textEdit1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (this.textEdit1.Text.Length == 10) 
     { 
      textEdit2.Text = textEdit1.Text;     
      this.textEdit1.Text = ""; 

     } 
     label2.Text = textEdit1.Text.Length.ToString(); 
     label1.Text = textEdit2.Text.Length.ToString(); 
    } 

enter image description here

ответ

5

Вы должны попробовать то же самое в случае Key_Up.

private void textEdit1_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (this.textEdit1.Text.Length == 10) 
    { 
     textEdit2.Text = textEdit1.Text;     
     this.textEdit1.Text = ""; 

    } 
    label2.Text = textEdit1.Text.Length.ToString(); 
    label1.Text = textEdit2.Text.Length.ToString(); 
} 

Key_Down Поскольку будут выполнены, как и когда клавиша будет нажата, и перед тем, как отпустить клавишу.

И с другой стороны Key_Up будет выполнен после того, как вы отпустите ключ на брелках, чтобы в текстовом поле был введен типизированный символ, и вы получите желаемый результат.

+0

я использовал другое событие предварительного просмотра вниз .. это то же самое? я пытаюсь прочитать некоторую информацию в Интернете, но я не понимаю, – chopperfield

0

Проблема заключается в том, что KeyDown-event возникает перед обновлением текстового свойства. Если вам нужна длина текста после того, как ваш ключ был обработан, вам необходимо подписаться на другое событие, например. TextChanged.

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