Как использовать combobox.Text после события Keydown в Winforms - PullRequest
1 голос
/ 10 января 2012

Я использую комбинированный список без раскрывающегося списка, чтобы принимать только ввод текста.В форме окна у меня есть кнопка ОК, которая вызывает функцию, которая использует свойство combobox.Text.

Проблема в том, что я хочу вызвать эту функцию, когда пользователь что-то набирает, а затем нажимает клавишу ВВОД.Я пытаюсь обработать событие KeyDown (я пробовал другие события с почти такими же результатами), но я обнаружил, что combobox.Text имеет значение null после его запуска.Я хочу, чтобы что-то вроде этого идеально работало:

private void cbox_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyValue == 13)
        {
            OK(cbox.Text); 
        }
    }  

Почему combobox.Text стирается после события KeyDown?Та же самая проблема не случится с Textbox, верно?Я почти в отчаянии, но я не хочу заменять это поле на каждой форме в программе. Lol ... Пожалуйста, сообщите!

Ответы [ 2 ]

1 голос
/ 10 января 2012

У вас есть более одного ComboBox в вашей форме? Событие предназначено для cbox, но вы получаете текстовый результат из cbo.

Я бы предложил изменить ваш код на это:

private void cbox_KeyDown(object sender, KeyEventArgs e)
{
     if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
     {
          string result = cbox.Text;
     }
}
0 голосов
/ 18 сентября 2018

При нажатии Enter ComboBox очищает текст до наступления события, потому что вы установили AutoCompleteMode.

Просто измените его на none.

cbox.AutoCompleteMode = AutoCompleteMode.None;
...