Какое событие использовать для элемента управления TextBox, чтобы сигнализировать об изменении текста при нажатии Enter? - PullRequest
2 голосов
/ 17 ноября 2009

TextChanged отправляет уведомление о каждом нажатии клавиши внутри элемента управления TextBox.

Должен ли я использовать событие KeyDown?

Ответы [ 5 ]

8 голосов
/ 17 ноября 2009

Да, в событии keydown:

if (e.KeyCode == Keys.Enter)
{
   // do stuff
}
5 голосов
/ 17 ноября 2009

Лучшее событие для обработки здесь - KeyDown. KeyDown срабатывает, когда пользователь явно вводит текст в поле или другие компоненты имитируют ввод текста, отправляя сообщения на TextBox. Это соответствует сценарию, который вы описали.

Если, с другой стороны, вы решите ответить на событие TextChanged, вы будете реагировать на каждый случай изменения текста (пользователем или кодом). Это означает, что ваше событие будет возбуждено, если я прямо скажу

someBox.Text = Environment.NewLine;
2 голосов
/ 17 ноября 2009

Для этого работает событие KeyPress:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Enter)
    {
        MessageBox.Show("Enter pressed!");
    }
}
1 голос
/ 17 ноября 2009

Это зависит от остальной части вашей формы. Если у вас есть кнопка «Принять», [Enter] в (почти) любом элементе управления активирует эту кнопку, и было бы лучше не использовать ее отдельно в текстовых полях.

И наоборот, если вы хотите обработать одно или несколько текстовых полей, не используйте кнопку «Принять».

0 голосов
/ 17 ноября 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...