Utilizando ProcessCmdKey evitar q se pueda escribi
Publicado por richisaurio (4 intervenciones) el 26/02/2009 20:07:52
Un saludo a todos, necesito una instruccion para realizar lo siguiente:
Estoy utilizando un datagrid y necesito que en una columna donde introduzco numeros reales, solo me permita escribir 2 decimales y apartir del 3er decimal que los ignore.
Hasta el momento estoy trabajando de la siguiente manera: Estoy en una pantalla, donde estoy controlando todas las teclas que son presionadas, esto lo consigo sobreescribiendo la funcion:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, _ByVal keyData As Keys)
As Boolean
Dentro de esta estoy validado que cuando se escriban numeros, en caso de que se escriba un punto ( indicando valores decimales) solo permita escribir dos digitos a partir de introducir un punto, hago lo siguiente:
Dim Vdecimal
Dim decimales
Select case ( keydata)
Case 110
' En caso de que sea punto
Vdecimal = True
Case 48 To 57
' CASE PARA LOS DIGITOS DEL 0 AL 9
' DEL TECLADO ALFANUMERICO
If Vdecimal Then
decimales = decimales + 1
End If
if decimales>2 then
' AQUI NECESITO ALGO
End If
End If
End Select
Me imagino que tengo que hacer que el valor que se maneja el keydata debe adoptar algun valor, pero nose como hacer esto.
En caso de que se esten escribiendo mas de 2 digitos decimales, necesito que sean ignorados, que ya no se escriban, es decir si escribo: 23.5 permite escribir un digito decimal más en caso de: 23.52 ya no debe permitir que se escriba ningun otro digito mas al escribir por decir un 4, el valor no debe cambiar 23.52.
Les agradezco anticipadamente cualquier respuesta. Gracias.
Estoy utilizando un datagrid y necesito que en una columna donde introduzco numeros reales, solo me permita escribir 2 decimales y apartir del 3er decimal que los ignore.
Hasta el momento estoy trabajando de la siguiente manera: Estoy en una pantalla, donde estoy controlando todas las teclas que son presionadas, esto lo consigo sobreescribiendo la funcion:
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, _ByVal keyData As Keys)
As Boolean
Dentro de esta estoy validado que cuando se escriban numeros, en caso de que se escriba un punto ( indicando valores decimales) solo permita escribir dos digitos a partir de introducir un punto, hago lo siguiente:
Dim Vdecimal
Dim decimales
Select case ( keydata)
Case 110
' En caso de que sea punto
Vdecimal = True
Case 48 To 57
' CASE PARA LOS DIGITOS DEL 0 AL 9
' DEL TECLADO ALFANUMERICO
If Vdecimal Then
decimales = decimales + 1
End If
if decimales>2 then
' AQUI NECESITO ALGO
End If
End If
End Select
Me imagino que tengo que hacer que el valor que se maneja el keydata debe adoptar algun valor, pero nose como hacer esto.
En caso de que se esten escribiendo mas de 2 digitos decimales, necesito que sean ignorados, que ya no se escriban, es decir si escribo: 23.5 permite escribir un digito decimal más en caso de: 23.52 ya no debe permitir que se escriba ningun otro digito mas al escribir por decir un 4, el valor no debe cambiar 23.52.
Les agradezco anticipadamente cualquier respuesta. Gracias.
Valora esta pregunta


0