C # KeyEvent no registra la tecla Intro / Retorno
-
21-09-2019 - |
Pregunta
He estado haciendo este formulario de acceso en C # y quería 'enviar' todos los datos tan pronto como el usuario hace clic en cualquiera de someter o presiona la tecla Intro / retorno.
He estado probando un poco con KeyEvents pero nada hasta ahora trabajadas.
void tbPassword_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show(e.KeyChar.ToString());
}
El código anterior era probar si el evento incluso trabajó en el primer lugar. Funciona perfectamente, cuando pulso 'D' me muestra 'D' cuando pulso '8' Me muestra '8', pero pulsando Entrar no hacer nada.
Así que a pesar de esto se debió a entrar realmente no está unido a un carácter, pero sí mostró retroceso, ha funcionado bien por lo que me tiene confundido acerca de por qué no se registró mi tecla Intro.
Así que la pregunta es: ¿Cómo inicio sesión la tecla Enter / Return? y ¿por qué no ingrese al pulsar la tecla derecha en este momento como debería?
Nota: He puesto el evento en un cuadro de texto
tbPassword.KeyPress += new KeyPressEventHandler(tbPassword_KeyPress);
Por lo que se activa cuando se pulsa el botón ENTER mientras se selecciona el cuadro de texto (que es fue todo el tiempo, por supuesto) que tal vez tiene algo que ver con la ejecución del código.
Solución
¿Tiene un botón definido como la acción predeterminada?
Si es así, que el control será engullir la tecla Intro.
Y tal vez esa es su respuesta. Es necesario establecer la propiedad DefaultAction true en el botón de enviar.
Otros consejos
Trate el evento KeyDown lugar.
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter");
}
}
Tal vez se debe utilizar el "AcceptButton" de la forma de ponerlo en el botón de envío. Creo que es lo que lo que realmente ...
Has dejado un poco de vital importancia, que debe establecer la propiedad Handled
a verdadero o falso dependiendo de la condición ...
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; } }
Probar
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);
}
}
ir a sus formas ...
en el cambio de esta forma básica
FormName.AcceptButton = buttonname;
esto sería leer el archivo de registro de clave de introducir de forma automática ... ..
se puede hacer esto si no quieres que los usuarios vean botón Aceptar
buttonName.Visible = false; FormName.AcceptButton = buttonname;
AcceptButton lee automáticamente la tecla enter del teclado