2010-03-20 2 views
4

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

Я немного тестировал KeyEvents, но ничего не работал.

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

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

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

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

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

tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress); 

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

+1

Попробуйте использовать KeyDown/вверх вместо –

+0

я испытал это на моем компьютере, он работал отлично. –

ответ

5

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

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

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

+0

Звучит так же, как и мне. Но как назначить кнопку DefaultAction кнопке? – Pieter888

+0

Спасибо, я понял это сейчас. Я сделал кнопку моим действием по умолчанию, но это не сработало. Но потом я понял, что это вызовет событие кнопки «Click», и я работал с событием «MouseClick». Я думаю, что это единственное отличие между Click и MouseClick ... – Pieter888

0

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

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

Все еще не работает для меня ... – Pieter888

+0

Вы подписаны на мероприятие? textBox1.KeyDown + = новый KeyEventHandler (textBox1_KeyDown); –

+0

Да, я сделал это, еще раз он работает на всех клавишах, кроме кнопки ввода. Может ли это быть ошибкой моего компьютера вместо кода? – Pieter888

0

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

0

Вы опустили жизненно немного, вы должны установить Handled свойство истинным или ложным в зависимости от состояния ...

 
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

На самом деле я, как правило, забываю добавлять это к своим обработчикам событий время от времени, спасибо, но это не решает мою проблему ... – Pieter888

0

Попробуйте

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

Также вы можете добавить submitButton.PerformClick(); Если вы хотите вызвать событие нажатия кнопки на своем отправлении – galford13x

+0

Извините, не работает ... Есть ли способ проверить, что ключ ввода каким-то образом «заблокирован» или прерван каким-то образом? – Pieter888

0

идти к формам ...

в коренном изменении формы этого

FormName.AcceptButton = buttonName;

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

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

buttonName.Visible = ложь; FormName.AcceptButton = buttonName;

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

Смежные вопросы