Tengo un formulario con un cuadro de texto único en él. Sin otros controles Cada vez que escribo la tecla 'Enter' o la tecla 'Esc', el formulario funciona como deseo; pero escucho ese horrible sonido de error de Windows. El código es similar al siguiente ...Cómo detener la ventana Sonido de error al escribir 'Entrar' o 'Esc'
public class EntryForm: Form
{
public EntryForm()
{
}
private void EntryTextBox_KeyUp(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
// do some stuff
Hide(); // I've also used DialogResult = DialogResult.OK here
e.Handled = true;
}
else if(e.KeyCode == Keys.Escape)
{
Hide(); // I've also used DialogResult = DialogResult.Cancel here
e.Handled = true;
}
}
}
puedo 'piratear' y hacer la parada de ruido añadiendo el siguiente código al constructor de la forma.
AcceptButton = new Button();
CancelButton = new Button();
Como dije, esto hace que el sonido no se reproduzca, pero creo que es una mala forma; especialmente porque no necesito un botón en el formulario.
¿Alguien sabe por qué este es el comportamiento y si hay una forma más clara de evitar que se reproduzca el sonido de error?
Si no tiene ningún botón, ¿cómo está obteniendo el diálogo para formarse cuando presiona enter o esc? Una forma con jus un control de edición normalmente se quedará allí cuando presione enter o esc. –
@ John Knoeller: el método Hide() oculta el formulario. También puede establecer la propiedad visible en falso. Si ha mostrado el formulario de forma modal, todo lo que tiene que hacer es establecer el resultado del diálogo desde el código y el formulario desaparecerá. –