C # KeyEvent не регистрирует ключ ввода / возврата - PullRequest
4 голосов
/ 20 марта 2010

Я делал эту форму входа в C # и хотел «отправить» все данные, как только пользователь нажмет кнопку «Отправить» или нажмет клавишу ввода / возврата.

Я немного тестировал KeyEvents, но пока ничего не получалось.

void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
}

Приведенный выше код должен был проверить, сработало ли событие вообще. Он отлично работает, когда я нажимаю «d», он показывает мне «d», когда я нажимаю «8», он показывает мне «8», но нажатие клавиши «Enter» ничего не делает.

Так что я подумал, что это потому, что ввод не привязан к символу, но он показывал возврат, он работал просто отлично, поэтому я запутался, почему не зарегистрировал мой ключ ввода.

Так что вопрос такой: Как мне зарегистрировать ключ ввода / возврата? и почему он не регистрирует нажатие клавиши прямо сейчас, как должно?

примечание: я поместил событие в текстовое поле

tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress);

Таким образом, он срабатывает при нажатии кнопки ввода, пока выбрано текстовое поле (которое, конечно, было все время), возможно, это как-то связано с выполнением кода.

Ответы [ 6 ]

7 голосов
/ 20 марта 2010

У вас есть кнопка, определенная как действие по умолчанию?

Если это так, то этот элемент управления поглотит клавишу Enter.

И, возможно, это ваш ответ. Вам необходимо установить для свойства DefaultAction значение true для кнопки отправки.

0 голосов
/ 28 ноября 2010

перейти к формам ...

в базовой форме изменить это

FormName.AcceptButton = buttonName;

это будет читать файл журнала ключей ввода... автоматически ..

вы можете сделать это, если не хотите, чтобы пользователи видели кнопку подтверждения

buttonName.Visible = false;FormName.AcceptButton = buttonName;

AcceptButton автоматически считывает клавишу ввода с клавиатуры

0 голосов
/ 20 марта 2010

Попробуйте это

textBox1.KeyPress += new KeyPressEventHandler(textBox1_KeyPress);

void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '\r')
    {
        MessageBox.Show("Enter Key Pressed", "Enter Key Pressed", MessageBoxButtons.OK);
    }
}
0 голосов
/ 20 марта 2010

Вы пропустили важный бит, необходимо установить для свойства Handled значение true или false в зависимости от условия ...

void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(e.KeyChar.ToString());
    if (e.KeyCode == Keys.Enter){
      // This is handled and will be removed from Windows message pump
      e.Handled = true; 
    }
}
0 голосов
/ 20 марта 2010

Возможно, вам следует использовать «AcceptButton» формы, чтобы установить для нее кнопку отправки. Думай, что это то, что ты на самом деле ...

0 голосов
/ 20 марта 2010

Вместо этого попробуйте событие KeyDown.

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("Enter");
    }
}
...