Автозаполнение на событии Combobox onkeypress пожирает клавишу Enter - PullRequest
4 голосов
/ 21 января 2011

У меня есть ComboBox с AutoCompleteMode = suggest, и я обрабатываю событие KeyPress следующим образом:

private void searchBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == (char)Keys.Return)
    {
        // do stuff
    }
}

Однако он не перехватывает клавишу Enter.Он ловит все остальное, так как выпадающий список автозаполнения работает отлично.

Я также попробовал предложенное здесь предложение: http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/2db0b540-756a-4a4f-9371-adbb92409806, установите свойство KeyPreview формы в значение true и установите точку останова в обработчике событий KeyPress формы:

private void Form_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = false;
}

Однако даже обработчик формы не перехватил клавишу ввода!

Есть предложения?

(Если я отключаю автозаполнение, он ловит клавишу Enter)

1 Ответ

6 голосов
/ 21 января 2011

Разница между KeyDown и KeyPress

В вашем случае лучшее, что вы можете сделать, это использовать событие KeyDown.

void SearchBox_KeyDown(object sender, KeyEventArgs e)
{
   if(e.KeyCode == Keys.Enter)
    {
        // Do stuff
    }
}

Еще одна интересная вещь о событии KeyPress:он даже ловит клавишу Enter при включенном автоконкурте, если в выпадающем списке нет элементов!:-)

...