Foros del Web » Programación para mayores de 30 ;) » .NET »

uso del evento KEYPRESS de textbox en VB winform .NET....

Estas en el tema de uso del evento KEYPRESS de textbox en VB winform .NET.... en el foro de .NET en Foros del Web. oigan, en VB6.0 yo tenia una forma muy eficiente de asegurarme que el usuario no introdujera valores alfanumericos en un textbox que unicamente debia aceptar ...
  #1 (permalink)  
Antiguo 27/01/2005, 13:41
 
Fecha de Ingreso: enero-2005
Mensajes: 12
Antigüedad: 19 años, 3 meses
Puntos: 0
uso del evento KEYPRESS de textbox en VB winform .NET....

oigan, en VB6.0 yo tenia una forma muy eficiente de asegurarme que el usuario no introdujera valores alfanumericos en un textbox que unicamente debia aceptar numeros.... y es el siguiente:

--------------------------------------------
Private Sub txtCotizacion_KeyPress(KeyAscii As Integer)
KeyAscii = filtroEntero(KeyAscii)
End Sub
--------------------------------------------
Public Function filtroEntero(KeyAscii As Integer) As Integer
If KeyAscii <> 8 Then
If KeyAscii < 48 Or KeyAscii > 57 Then
filtroEntero = 0
Else
filtroEntero = KeyAscii
End If
Else
filtroEntero = 8
End If
End Function
--------------------------------------------

pero ahora estoy aprendiendo VB.NET y la verdad no tengo ni la menor idea de como emular esta funcionalidad con la ayuda del evento keypress del textbox.....
por favor si alguien tiene una idea.... que la diga....

de antemano muchisimas gracias...

atte: el nizaro :(
  #2 (permalink)  
Antiguo 27/01/2005, 15:15
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Sería mas o menos así:

Cita:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim KeyAscii As Integer
KeyAscii = filtroEntero(Asc(e.KeyChar))
End Sub
Public Function filtroEntero(ByVal KeyAscii As Integer)
If KeyAscii <> 8 Then
If KeyAscii < 48 Or KeyAscii > 57 Then
Return 0
Else
Return KeyAscii
End If
Else
Return 8
End If
End Function
Ya sería cosa de adaptarlo a lo que necesitas pero esa es la idea general.

Espero que te sirva.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 27/01/2005, 19:04
 
Fecha de Ingreso: enero-2005
Mensajes: 12
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta mmmmmmmmmm

pues la verdad ya lo he intentado asi mas o menos como lo planteas, pero no veo la forma de como "interceptar" el key antes de que se lo asigne el form al textbox, es como si no pudieras eviarlo.... ademas, no es posible modificar el key del textbox desde este evento [a diferencia de VB6.0] porque el arg se lo manda byval, y n obyref :(
esto es un gran problema.... :(
creo que ya encontre una fuerte desventaja del .NET comparado con VB6.0... :(

espero haya otra solucion viable, si se les ocurre otra idea, porfa hagamenla saber....

atte: el nizaro
  #4 (permalink)  
Antiguo 27/01/2005, 21:25
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Puedes hacerlo de una manera simple con:
Código:
Private Sub txtCotizacion_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtCustomLog.KeyPress
        If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar)) Then
            e.Handled = True
        End If
    End Sub
Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 28/01/2005, 09:21
 
Fecha de Ingreso: enero-2005
Mensajes: 12
Antigüedad: 19 años, 3 meses
Puntos: 0
De acuerdo Wooooooooooooooowwwwwwwwwwwwww

en verdad esa fué una MAGNIFICA respuesta, llevo semanas tratando de resolver ese problema pero mi falta de experiencia en .NET y mi error al tratar de resolver los problemas al estilo 6.0 ... pues hacen que no vea la respuesta aunque este frente a mis narices.... !!!!

muchas gracias Xknown, en verdad que me has salvado el día...

y tambien gracias a RootK, que aunque no entendí a cabalidad su respuesta, pues tambien hay que reconocer su ayuda......

gracias a los dos

atte: el nizaro
  #6 (permalink)  
Antiguo 10/02/2005, 09:03
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Hola xKnown

Si eso fue una excelente respuesta, pero como funciona con ASP.NET ya que esa es para Visual Basic.NET y no me funciona en ASP.NET


Gracias

Última edición por laureano59; 10/02/2005 a las 09:15
  #7 (permalink)  
Antiguo 10/02/2005, 18:08
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Efectivamente no funciona y no tiene porque funcionar con asp.net ya que los TextBox's de asp.net ni siquiera tienen el evento OnKeyPress. Si quieres tener la misma funcionalidad tienes que utilizar código del lado del cliente, definitamente el más adecuado es javascript, ya que es soportado por varios navegadores.
Aquí te envío un pequeño ejemplito:
Código:
<%@ Page Language="VB" %>
<script runat="server">
    Sub Page_Load( sender as Object,e as EventArgs)
        Dim script as String = "<script type=""text/javascript"">"
        script += "function validar(e) {"
        script += "tecla = (document.all)?e.keyCode:e.which;"
        script += "if (tecla==8) return true;"
        script += "patron = /\d/;"
        script += "te = String.fromCharCode(tecla);"
        script += "return patron.test(te);"
        script += "}"
        script += "</" + "script>"
        RegisterClientScriptBlock("kbd",script)
        txtDemo.Attributes.Add("onkeypress","return validar(event)")
    End Sub
</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        <asp:TextBox id="txtDemo" runat="server"></asp:TextBox>
        <!-- Insert content here -->
    </form>
</body>
</html>
Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #8 (permalink)  
Antiguo 11/02/2005, 14:09
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Hola de nuevo.

Bueno, lograr lo anterior en un java script no es complicado, Lo que verdaderamente requiero es que al escribir un código en un TEXTBOX y luego dar ENTER (todo esto es en ASP.NET) automaticamente me haga el siguiente evento : consultarme unos datos en una base de datos y mostrar el resultado en un textbox.

El problema no es conectarme a la base de datos lo unico que no se es como hacerlo al precionar ENTER y no se Si con JAVA SCRIPT se pueda.

Si tienes alguna solución o un ejemplillo se lo agradesería.


Gracias de nuevo
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:02.