none
Cancelar Login sin validar usuario

    Pregunta

  • Buen día señores. Pues eso, resulta que tengo un formulario de login, el cual "trabaja bien" hasta que me di cuenta de un problemita: Tengo, obviamente dos textbox, (usuario y contraseña), si verifica en la BD el usuario y si existe, permite pasar al textbox de la contraseña, aquí no hay problema. El problema es que si quiero cancelar, antes de verificar usuario, no me lo permite, hasta que ingrese un usuario válido. Sé que esto es porque la búsqueda la puse en el evento LostFocus del textbox usuario. Ya intenté cambiando de evento, pero ninguno me funciona. La pregunta concreta sería, entonces:

    En qué evento o momento debo colocar la función de ir a buscar en BD el usuario, si quiero poder cancelar antes de ingresar un usuario???

    Espero se entienda la pregunta...

    Saludos y gracias.


    Ing. José Elías Pelayo

    martes, 26 de febrero de 2019 21:28

Respuestas

  • Partiendo de eso entonces lo que puedes hacer es verificar si btncancelar fue el control al que se le dio el foco cuando se salió del textbox, y si es así no hacer la validación, debido a que lostfocus se ejecuta después de que otro control ya recibió el foco entonces podrás saber que control seleccionaste después de ubicarte txtusuario

    Private Sub txtusuario_LostFocus(sender As Object, e As EventArgs) Handles txtusuario.LostFocus
            Try
              If btncancelar.Focused Then
                  Return
              End 
              'se regresará antes de validar y entonces no le devolverá el foco al txtusuario

    • Marcado como respuesta eliaspelayo jueves, 28 de febrero de 2019 15:41
    miércoles, 27 de febrero de 2019 16:06

Todas las respuestas

  • Hola eliaspelayo

    "El problema es que si quiero cancelar, antes de verificar usuario, no me lo permite," que quieres decir con que no te lo permite? regresas el puntero al control del que perdió el foco?, lo que me imagino es que llegas a txtUser y entonces quieres dar cancelar (me imagino un boton cancelar) pero cuando pierde el foco entonces valida que el usuario no existe y haces que se regrese al control??? es así?, también podrías poner el código eso nos ayudaría a entenderte mejor.

    martes, 26 de febrero de 2019 21:43
  • Que tal, gracias por responder. Y sí es exactamente lo que sucede. Anexo código:

        Private Sub btncancelar_Click(sender As Object, e As EventArgs) Handles btncancelar.Click
                Close()
        End Sub

    ------------------------------------

        Private Sub txtusuario_LostFocus(sender As Object, e As EventArgs) Handles txtusuario.LostFocus
            Try
                Dim xuser = txtusuario.Text.ToString.Trim
                pCargaDatos(tblcomboemp, dtacomboemp, cmdcomboemp, "select * from empleados where activo = 'S' and usuario= '" + xuser + "'", cntconexion, "Empleados")
                Dim renglon As DataRow = tblcomboemp(0)
                Dim zuser = renglon("usuario").ToString.Trim
                If xuser = zuser Then
                    lblapepat.Text = renglon("apepat").ToString
                    lblclave_e.Text = renglon("clave_e").ToString
                    gnivel = renglon("nivel").ToString
                    'Label5.Text = renglon("apemat")
                    Label6.Text = renglon("clave").ToString
                    contras = renglon("clave").ToString
                    mnombre = renglon("nombre").trim.ToString
                    mapepat = renglon("apepat").trim.ToString
                    mapemat = renglon("apemat").trim.ToString
                    mclave_e = renglon("clave_e").ToString.Trim
                    Validacion.lblusuario.Text = "Validando: " + (mnombre + " " + mapepat).Trim
                End If
            Catch ex As Exception
                MsgBox("No existe Usuario")
                txtusuario.Focus()
            End Try

        End Sub


    Ing. José Elías Pelayo

    miércoles, 27 de febrero de 2019 12:55
  • Partiendo de eso entonces lo que puedes hacer es verificar si btncancelar fue el control al que se le dio el foco cuando se salió del textbox, y si es así no hacer la validación, debido a que lostfocus se ejecuta después de que otro control ya recibió el foco entonces podrás saber que control seleccionaste después de ubicarte txtusuario

    Private Sub txtusuario_LostFocus(sender As Object, e As EventArgs) Handles txtusuario.LostFocus
            Try
              If btncancelar.Focused Then
                  Return
              End 
              'se regresará antes de validar y entonces no le devolverá el foco al txtusuario

    • Marcado como respuesta eliaspelayo jueves, 28 de febrero de 2019 15:41
    miércoles, 27 de febrero de 2019 16:06
  • Bien, con eso tuve. 

    Gracias


    Ing. José Elías Pelayo

    jueves, 28 de febrero de 2019 15:41