none
Mostrar un mensaje y dejar el foco en el lugar correcto RRS feed

  • Pregunta

  • Tengo varios TextBox, quiero comprobar si están vació, y si están vació mostrar un Mensaje y que se quede el foco en el TextBox vació. Tengo este código pero igual hace es resto del codigo

        Public Sub VerificarCajaTexto(ByVal xForm As Form)
            For Each ctrl As TextBox In xForm.Controls.OfType(Of TextBox)()
                If ctrl.Text = "" Then
                    MsgBox("Campo obligatorio", vbInformation)
                    ctrl.Focus()
                    Exit Sub
                End If
            Next
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            'Si unos de los texto esta vacio que pare aca
            VerificarCajaTexto(Me)
    
            'O sino que continue aca
            MsgBox("Guardado")
    
        End Sub


    jueves, 25 de abril de 2013 18:16

Todas las respuestas

  • Hola podrías devolver un valor por ejemplo si alguna caja esta vacía retornar un Boolean con False sino con True y  en la acción del botón preguntar por ese valor si es False sale del método sino sigue tu lógica.

    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    jueves, 25 de abril de 2013 19:01
  • Esa misma idea tengo pero la funcion VerificarCajaTexto, no se como ponerle ese Bolean.

    Saludos...

    jueves, 25 de abril de 2013 19:03
  • Haz probado creando la variable a nivel de Clase y en tu código esto:

    Public Sub VerificarCajaTexto(ByVal xForm As Form) For Each ctrl As TextBox In xForm.Controls.OfType(Of TextBox)() If ctrl.Text = "" Then MsgBox("Campo obligatorio", vbInformation) ctrl.Focus()
    vBoolean = False Exit Sub
    Else

    vBoolean = True End If Next End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Si unos de los texto esta vacio que pare aca VerificarCajaTexto(Me)

    If vBoolean = False Then

    Exit Sub

    End If

    'O sino que continue aca MsgBox("Guardado") End Sub

    Prueba de esa forma y comentas como es que te fue.


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos


    • Editado José Barba jueves, 25 de abril de 2013 19:14
    jueves, 25 de abril de 2013 19:14
  • hola

    esta pregunta se relaciona con

    http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/e4c60de7-00c0-47b5-8e37-f65a67d888a7

    ----

    como que hace el resto del codigo si usaste un Exit Sub, eso deberia ahcer que salga de la funcion

    aunque podrias ahber usado el Exit For , creo que seria lo correcto proque deberias salir del loop

    -----

    lo que si creo deberias cambiar es el messagebox por el ErrroProvider para asignar el mensaje

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    jueves, 25 de abril de 2013 19:22
  • Asi es Lea, es algo similar, quiero usar este metodo por que parece que resalta mas el error.

    Jose, funciona de maravilla asi. Ahora tengo un problemita con el Focus. Lo que pasa es que el foco se queda en el ultimo caja aunque el primero este vacio.

    Ejemplo: si tengo caja1, caja2, caja3 si caja1 contiene texto el focus deveria quedar el focus en caja2.

    Si caja3 tiene texto y caja1 y caja 2 NO Deberia quedar en Caja1.

    Ojala me entiendan.

    Saludos...

    jueves, 25 de abril de 2013 19:34
  • Prueba de esta forma:

    Public Sub VerificarCajaTexto(ByVal xForm As Form) For Each ctrl As TextBox In xForm.Controls.OfType(Of TextBox)() If ctrl.Text = "" Then MsgBox("Campo obligatorio", vbInformation)

    DirectCast(ctrl,TextBox)

    ctrl.Focus()
    vBoolean = False Exit Sub
    Else

    vBoolean = True End If Next End Sub


    Verifica que no estés asignando Focus a esa caja de texto dentro de tu código. También revisa este enlace donde se planteó algo similar te puede ser de ayuda.


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    jueves, 25 de abril de 2013 20:11
  • en DirectCast(ctrl, TextBox) me dice que la expresión no es un método.

    Saludos...


    • Editado ariana.NET jueves, 25 de abril de 2013 20:18
    jueves, 25 de abril de 2013 20:18
  • Esa línea borrala y revisa el enlace que te olvidé darte disculpa:

    Recorrer Controles


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    jueves, 25 de abril de 2013 20:23
  •   Cambia VerificarCajaTexto a función de tipo boolena

    Public Function VerificarCajaTexto(ByVal xForm As Form) As Boolean
     
             Dim ok  As Boolean = True
             ForEach ctrl As TextBox In xForm.Controls.OfType(Of TextBox)()
                 If ctrl.Text = "" Then
     
                    ok = False
                     MsgBox("Campo obligatorio", vbInformation)
                     ctrl.Focus()
     
                    'en cuanto se encuentre uno obligatorio no recorrer mas el bucle
                     Exit For
     
            Next
     
             Return ok
         End Function
    

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            'Si unos de los texto esta vacio que pare aca
            If VerificarCajaTexto(Me) Then   MsgBox("Guardado")
    
        End Sub

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos





    viernes, 26 de abril de 2013 11:11