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

Ayuda Urgente

Estas en el tema de Ayuda Urgente en el foro de .NET en Foros del Web. Hola expertos, tengo una duda, espero que puedan ayudarme, necesito hacer una funcion que me acepte solo letras en un textbox, ya la tengo pero ...
  #1 (permalink)  
Antiguo 12/03/2010, 09:21
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Pregunta Ayuda Urgente

Hola expertos, tengo una duda, espero que puedan ayudarme, necesito hacer una funcion que me acepte solo letras en un textbox, ya la tengo pero quiero meterla en un modulo para poder utilizarla en cualquier formulario, el codigo que tengo es este:

Public Sub Validar_letras()

'Validar sólo letras
If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then
e.Handled = True
End If

End Sub


Pero me marca error en la letra "e" , dice que no se ha declarado el nombre "e", como puedo solucionar esto, gracias. Saludos
  #2 (permalink)  
Antiguo 12/03/2010, 09:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Ayuda Urgente

Este código:
Código vb.net:
Ver original
  1. If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then
  2. e.Handled = True
  3. End If
No puede ir en una función o método cualquiera, sino en el evento KeyPress de tu TextBox.
Te da error porque faltan los parámetros declarados en el prototipo del evento.

Si tu idea es usar un método para varios TextBox, mi sugerencia sería crear algo así:

Código vb.net:
Ver original
  1. Public Sub Validar_letras(ByRef sender As Object, ByRef e As System.Windows.Forms.KeyPressEventArgs) as Boolean
  2.     If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then
  3.         e.Handled = True
  4.     End If
  5. End Sub
De esa forma podrías invocarlo desde varios eventos KeyPress de diferentes TextBox.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 12/03/2010, 10:01
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Ayuda Urgente

Pero en donde meto ese código, en el módulo dentro de la clase ?, porque lo necesito para usarlo en cualquier parte de la aplicación.
  #4 (permalink)  
Antiguo 12/03/2010, 10:13
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: Ayuda Urgente

Puedes meterlo como un método en tu clase o como tu decidas por ejemplo:
En alguna parte de tu clase insertas el método.
Código vb:
Ver original
  1. Public Function Letras(ByVal caracter As Char) As Boolean
  2.  
  3.         If Char.IsLetter(caracter) Then
  4.             Return False
  5.         ElseIf Char.IsControl(caracter) Then
  6.             Return False
  7.         ElseIf Char.IsSeparator(caracter) Then
  8.             Return False
  9.         Else
  10.             Return True
  11.         End If
  12.  
  13.     End Function

Después lo llamas en los textbox que quieras que contenga dicha validación:

Código vb:
Ver original
  1. Private Sub textbox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles textbox1.KeyPress
  2.         e.Handled = Letras(e.KeyChar)
  3.     End Sub
  #5 (permalink)  
Antiguo 12/03/2010, 10:48
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Ayuda Urgente

ok, ahora me dice "No se ha declarado el nombre "letras", cuando pongo

e.Handled = letras(e.KeyChar) en keypress
  #6 (permalink)  
Antiguo 12/03/2010, 11:55
 
Fecha de Ingreso: octubre-2009
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Ayuda Urgente

ya esta resuelto, muchas gracias

Etiquetas: Ninguno
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 05:39.