none
VALIDAR COMIENZO DE LOS ESCRITO EN UN TEXTBOX

    Pregunta

  • Buenos días para unos, buenas tardes para otros y buenas noches para el resto.

    De antemano gracias por la ayuda que puedan brindarme, mi duda es la siguiente.

    Tengo un TextBox en el cual ingreso cierta información, lo que necesito es determinar como empieza dicha información, es decir, quiero que lo escrito empiece obligatoriamente por J por ejemplo y luego de que escriba J poder seguir escribiendo de lo contrario enviar un mensaje que diga por ejemplo el Rif no comienza por J.

    Muchas gracias. 


    Angel Jesus Gil Macayo

    miércoles, 4 de enero de 2017 15:38

Respuestas

  • Angel Jesus Gil Macayo,

    Tienes varios caminos, puedes combinar tres expresiones mediante el operador OR, puedes utilizar expresiones regulares o puedes comparar el primer carácter contra una colección de caracteres permitidos, algo como:

    Private Sub btnGuardarCambios_Click(sender As Object, e As EventArgs)
    
    	Dim CaracteresPermitidos As Char() = {"J", "G", "E"} 'Colección de caracteres permitidos
    
    	If Not String.IsNullOrEmpty(TextBox1.Text) Then '¿el cuadro de texto contiene un valor?
    		If CaracteresPermitidos.Contains(TextBox1.Text.Substring(0, 1)) Then
    			'Guardar
    		Else
    			MessageBox.Show("Debes iniciar con la letra J, G o E")
    		End If
    	End If
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 4 de enero de 2017 18:51

Todas las respuestas

  • Angel Jesus Gil Macayo,

    Puedes validar el valor ingresado por el usuario en el evento Validating.

    Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs)
    
    	Dim txt As TextBox = DirectCast(sender, TextBox)
    
    	ErrorProvider1.SetError(txt, IIf(txt.Text.StartsWith("J"c),
    						Nothing,
    						"Debes iniciar con la letra J"))
    
    	e.Cancel = Not txt.Text.StartsWith("J"c)
    	
    End Sub

    Para mostrar el mensaje de error asociado al cuadro de texto debes usar el componente ErrorProvider.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 4 de enero de 2017 15:54
  • Hola, gracias por tu respuesta pero por lo que estoy diseñando no puedo usar el control errorProvider ni el evento Validating, habria alguna manera de que el error se muestre en un MeesageBox?

    Angel Jesus Gil Macayo

    miércoles, 4 de enero de 2017 16:09
  • Angel Jesus Gil Macayo,

    ¿Qué restricciones tienes para no usar el evento Validating? Puedes hacer lo mismo con el evento Leave que se desencadena cuando el control deja de ser el activo (o para efectos del caso cuando pierde el foco), ¿tienes restricciones también con el evento Leave?.

    Otra forma puede ser validando por el evento KeyPress pero si el valor es copiado desde el portapapeles la validación no se efectuará.

    Otra forma -y tiene que ver con el diseño- es que antepongas una etiqueta con el valor constante al cuadro de texto, luego, al persistir los datos será un paso simple de concatenar el valor de la etiqueta con el valor ingresado por el usuario en el cuadro de texto.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 4 de enero de 2017 16:33
  • Bueno quisiera que al momento de guardar los datos sea cuando me de el mensaje si la cadena no empieza por el o los caracteres especificados, usando los eventos que me mencionas se validarian al momento de escribir y es lo que no quisiera, Ahora bien puedes darme por favor un ejemplo en el evento validating pero utilizando messagebox

    Angel Jesus Gil Macayo

    miércoles, 4 de enero de 2017 16:39
  • Angel Jesus Gil Macayo,

    No hay nada distinto Angel, la misma lógica que propuse en el evento Validating la puedes usar en cualquier otro punto. Por otro lado, los eventos propuestos (Validating y Leave) no se desencadenan cuando el usuario pulsa una tecla sobre el control, se desencadenan cuando el usuario termina de escribir y pasa el foco a otro control. 

    - Ejemplo de validación al momento de guardar:

    Private Sub btnGuardarCambios_Click(sender As Object, e As EventArgs)
    
    	If TextBox1.Text.StartsWith("J"c) Then
    		'Guardar
    	Else
    		MessageBox.Show("Debes iniciar con la letra J")
    	End If
    
    End Sub

    - Ejemplo de validación en el evento Validating:

    Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs)
    
    	Dim txt As TextBox = DirectCast(sender, TextBox)
    
    	If Not txt.Text.StartsWith("J"c) Then
    		MessageBox.Show("Debes iniciar con la letra J")
    		e.Cancel = True
    	End If
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 4 de enero de 2017 17:27
  • Entiendo, ahora una ultima consulta, esae campo que utilizo valida si empieza con J, G o E como se haria en ese caso?

    Angel Jesus Gil Macayo

    miércoles, 4 de enero de 2017 18:29
  • Angel Jesus Gil Macayo,

    Tienes varios caminos, puedes combinar tres expresiones mediante el operador OR, puedes utilizar expresiones regulares o puedes comparar el primer carácter contra una colección de caracteres permitidos, algo como:

    Private Sub btnGuardarCambios_Click(sender As Object, e As EventArgs)
    
    	Dim CaracteresPermitidos As Char() = {"J", "G", "E"} 'Colección de caracteres permitidos
    
    	If Not String.IsNullOrEmpty(TextBox1.Text) Then '¿el cuadro de texto contiene un valor?
    		If CaracteresPermitidos.Contains(TextBox1.Text.Substring(0, 1)) Then
    			'Guardar
    		Else
    			MessageBox.Show("Debes iniciar con la letra J, G o E")
    		End If
    	End If
    
    End Sub


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 4 de enero de 2017 18:51