miércoles, 31 de octubre de 2012

Deshabilitar que la tecla ENTER dispare el evento Button.Click

 

Este caso aunque la solución llegue a ser sencilla en implementación, no me parece que este al alcance de quienes tenemos un conocimiento básico, intermedio de DotNet. En fin, cuando necesitemos que un botón dispare su evento click al pulsar la tecla ENTER cuando esté enfocado, deberemos forzosamente crear nuestro propio botón heredándolo de otro botón claro esta, en mi caso lo he hecho a partir de uno de DevExpress.

Una vez hecho esto, sobrescribir el método ProcessCmdKey tal como muestro más abajo.

Para mi  caso muy particular se requería que si se detectara a tecla y de ser ENTER se enviara el foco al siguiente control, lo cual realice mediante un PreviewKeyDown.

image

Public Class iBotonDx     Inherits DevExpress.XtraEditors.SimpleButton     Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean         Return keyData = Keys.Enter OrElse MyBase.ProcessCmdKey(msg, keyData)     End Function     Private Sub iBotonDx_PreviewKeyDown(sender As System.Object, e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown         If e.KeyCode = Keys.Enter Then             SendKeys.Send("{TAB}")         End If     End Sub

End Class

Bien es todo en este entrada. Como siempre espero sea de utilidad.


 


Happy Coding… KarlozArba

No hay comentarios: