Альтернатива для установки фокуса из события Enter - PullRequest
2 голосов
/ 27 декабря 2010

У меня есть текстовое поле, и в некоторых случаях в событии Enter мне нужно установить фокус на другое текстовое поле.

Я попробовал этот код:

 private void TextBox1_Enter(object sender, EventArgs e)
 {
     if(_skipTextBox1) TextBox2.Focus();
 }

Но этот код не работает. После этого я нашел на MSDN:

Не пытайтесь установить фокус из обработчиков событий Enter, GotFocus, Leave, LostFocus, Validating или Validated.

Так, как я могу сделать это по-другому?

Ответы [ 3 ]

3 голосов
/ 27 декабря 2010

Отложить выполнение метода Focus () до завершения выполнения события. Элегантно сделано с помощью метода Control.BeginInvoke (). Как это:

    private void textBox2_Enter(object sender, EventArgs e) {
        this.BeginInvoke((MethodInvoker)delegate { textBox3.Focus(); });
    }
0 голосов
/ 20 января 2018
textBox.Select();

или

textBox.Focus();

или set TabIndex = 0 из свойств этого textBox.

оба метода используются, чтобы установить фокус на textBox в C #, .NET

0 голосов
/ 27 декабря 2010

Вместо этого вы можете обработать событие KeyPress :

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
   if (e.KeyChar == (char)Keys.Return)
   {
      e.Handled = true;
      TextBox2.Focus();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...