
Interceptar y eliminar las flechas de navegacion
Publicado por Angel (24 intervenciones) el 22/05/2014 18:57:54
Que tal Jovenes tengo un problema que me esta matando
sucede que tengo un texbox al cual le estoy tratando de hacer un override para que solo acepte numeros y perfecto eso funciona sin problemas
el problema es que quiero anular completamente las flechas de desplazamiento para que el usuario no pueda navegar entre los numeros ingresados y solo pueda borrar el numero que tenga de inicio
se que tengo que hacerlo con el evento KeyPress pero el problema es que el evento Key Press no detecta las flechas de desplazamiento y eso creo que es porque estas no tienen codigo ASCII.
para interceptar las letras Comas Puntos etc utilize el evento KeyDown para interceptarlos y darle valor true ó False a una variable Boolena que luego utilizo en el evento KeyPress en e.Handled para que no puedan ingresar letras.
todo eso funciona perfecto e igual al presionar las teclas de navegacion si ocurre el evento KeyDown y asigna Valor True a la Variable Booleana pero al no levantarse el evento KeyPress nunca le asigna True a e.Handled.. Intente lo siguiente
Dim kea As New KeyPressEventArgs(Convert.ToChar("e.KeyCode"))
OnKeyPress(kea)
osea declarar una variable de tipo KeyPress y de esta manera si que consegui levantar el evento KeyPress y si le asigna True a e.Handled pero la flecha de navegacion si se mueve y es lo que no quiero
o si existe alguna otra alternativa que yo no conozca les agradeceria su ayuda, Muchisimas gracias
adjunto el código
Ignoren lo que esta comentado puesto que eso funciona jejejejeje Muchas gracias amigos!!
sucede que tengo un texbox al cual le estoy tratando de hacer un override para que solo acepte numeros y perfecto eso funciona sin problemas
el problema es que quiero anular completamente las flechas de desplazamiento para que el usuario no pueda navegar entre los numeros ingresados y solo pueda borrar el numero que tenga de inicio
se que tengo que hacerlo con el evento KeyPress pero el problema es que el evento Key Press no detecta las flechas de desplazamiento y eso creo que es porque estas no tienen codigo ASCII.
para interceptar las letras Comas Puntos etc utilize el evento KeyDown para interceptarlos y darle valor true ó False a una variable Boolena que luego utilizo en el evento KeyPress en e.Handled para que no puedan ingresar letras.
todo eso funciona perfecto e igual al presionar las teclas de navegacion si ocurre el evento KeyDown y asigna Valor True a la Variable Booleana pero al no levantarse el evento KeyPress nunca le asigna True a e.Handled.. Intente lo siguiente
Dim kea As New KeyPressEventArgs(Convert.ToChar("e.KeyCode"))
OnKeyPress(kea)
osea declarar una variable de tipo KeyPress y de esta manera si que consegui levantar el evento KeyPress y si le asigna True a e.Handled pero la flecha de navegacion si se mueve y es lo que no quiero
o si existe alguna otra alternativa que yo no conozca les agradeceria su ayuda, Muchisimas gracias
adjunto el código
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Public Class Currency
Inherits TextBox
Private decCurrency As Decimal
Private blnNotKeyNum As Boolean = True
Public Property Currency() As Decimal
Get
Return decCurrency
End Get
Set(ByVal value As Decimal)
decCurrency = Format(value, "###,##0.00")
End Set
End Property
Protected Overrides Sub OnKeyDown(ByVal e As System.Windows.Forms.KeyEventArgs)
'Dim Kcode As Keys = e.KeyCode
'If Kcode < Keys.D0 OrElse Kcode > Keys.D9 Then
' If Kcode < Keys.NumPad0 OrElse Kcode > Keys.NumPad9 Then
' If Kcode <> Keys.Back And Kcode <> Keys.Oemcomma And Kcode <> Keys.OemPeriod And Kcode <> Keys.Decimal Then
' blnNotKeyNum = True
' End If
' End If
'End If
MsgBox(e.KeyCode)
If e.KeyCode = Keys.Left OrElse e.KeyCode = Keys.Right Then
blnNotKeyNum = True
Dim kea As New KeyPressEventArgs(Convert.ToChar("k"))
OnKeyPress(kea)
End If
'If Kcode < Keys.D0 OrElse Kcode > Keys.D9 Then If Kcode < Keys.NumPad0 OrElse Kcode > Keys.NumPad9 Then If Kcode <> Keys.Back And Kcode <> Keys.Oemcomma And Kcode <> Keys.OemPeriod And Kcode <> Keys.Decimal Then blnNotKeyNum = True
'And (e.KeyCode <> Keys.Back And e.KeyCode <> Keys.Oemcomma And e.KeyCode <> Keys.OemPeriod And e.KeyCode <> Keys.Decimal)
'EVALUA QUE LA TECLA SEA NUMERICA
'If Not (e.KeyCode < Keys.D0 OrElse e.KeyCode > Keys.D9) Or (e.KeyCode < Keys.NumPad0 OrElse e.KeyCode > Keys.NumPad9) Then
' HASTA EL MOMENTO TODO VA BIEN YA QUE LA TECLA ES NUMERICA
' blnNotKeyNum = False
'Else
' blnNotKeyNum = True
'End If
End Sub
Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
'EVALUA QUE LO INGRESADO SEA NUMERO
e.Handled = blnNotKeyNum 'COMO NO ES NUMERO NO INGRESA EL CARACTER
blnNotKeyNum = False ' Reinicia el Valor que tenia como 0
End Sub
End Class
Ignoren lo que esta comentado puesto que eso funciona jejejejeje Muchas gracias amigos!!
Valora esta pregunta


0