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

lunes, 15 de octubre de 2012

La propiedad EditValue de un TextEdit de DevExpress devuelve error en su método GET si no se tiene un valor inicial.

Bueno pues resulta que si no hemos asignado mediante código un valor inicial para la propiedad EditValue en un TextEdit de DevExpress este nos tira un error de referencia nula. Y este error se dispara aun cuando validemos el contenido de la propiedad con IsNothing o String.IsNullOrEmpty.

Bien la solución es bastante sencilla, lo único que debemos hacer es configurar en tiempo de diseño dicha propiedad, estableciendo el tipo de dato que contendrá y el valor que almacenara cuando nosotros no establezcamos nada de forma predeterminada.

image

 

Espero que les sea de utilidad.

 

Happy Coding…. KarlozArba

viernes, 5 de octubre de 2012

Binding de los valores de una ENUMERATION en el DataSource de un Control.

 

El día de hoy, muy brevemente comentare que cuando nos sea necesario cargar los valores de una enumeración en el DataSource de un control [ej. Combo, List, etc] quizá nuestra primera intensión sea recorrer la enumeración sin embargo la solución que les recomiendo es la siguiente:

cbEstatus.Properties.DataSource = System.Enum.GetValues(GetType(Dominio.Enumeraciones.EnEstatus))

Con lo cual cargaran inmediatamente los valores, ahorrándonos un poco de trabajo y alguno que otra contratiempo.

 

Bien como dije la entrada de hoy ha pecado de breve, pero como siempre espero que sea de utilidad para la comunidad.
Happy Coding... Karloz Arba