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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top