Problemas difíciles, soluciones fáciles
Hoy he tenido problemas de nuevo con el tema de ejecutar una función cuando se presiona la tecla ENTER dentro de un ComboBox en una aplicaron Windows Forms utilizando c#.
Lo primero que piensas, al igual que en un TextBox es utilizar el Evento KeyPress y usar el mismo código que en el, algo así como
if ((int)e.KeyChar == (int)Keys.Enter)
{
//aqui codigo
}
Pero en la practica esto no funciona dentro de un ComboBox.
La solución
Como no es la primera vez que me enfrento a esto, en esta ocasión quería intentar solucionarlo de la manera mas sencilla posible, ya que en otras ocasiones la verdad que me lié mucho. Pero conseguí dar con la solución. Internet a veces sirve para algo.
Hay que sobrescribir el evento ProcessCmdKey y comprobar que el control activo es el ComboBox que tu deseas. Esto, en teoría, lo podrías hacer con todos los controles del formulario.
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if ((this.ActiveControl == ListPostCodes) && (keyData == Keys.Enter))
{
MessageBox.Show("Combo Enter");
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
Como veis en el if se comprueba el control activo, por lo que con poner ahí el control que queréis que ejecute el procedimiento al presionar ENTER bastaría.
Happy coding
#trucos #CSHARP #windowsforms