none
Mantener Foco en TextBox al presionar Enter RRS feed

  • Pregunta

  • Hola gente, el tema en cuestión es que ingreso un numero en un TextBox, presiono Enter, y realiza una accion, hasta ahi funciona perfecto, lo que pasa es que el Textbox pierde foco y no puedo seguir ingresando otros numeros, para ello tengo que hacer click en el TextBox nuevamente.

    Agradeceria si alguien me puede dar una mano con esto y decirme como hacer para que el TextBox no pierda el Foco. Gracias! Saludos!

    • Cambiado Enrique M. Montejo martes, 18 de septiembre de 2012 15:34 Controles de Windows Forms (De:Lenguaje VB.NET)
    martes, 11 de septiembre de 2012 14:33

Todas las respuestas

  • prueba haciendo esto

    TuTextBox.Focus()

    martes, 11 de septiembre de 2012 14:44
  • ya lo hice, de dos formas, y no funciona
     Private Sub Txt_Prot_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Txt_Prot.KeyDown
            If e.KeyCode = Keys.Enter Then
                Dim NomPdfComp As String = ""
                NomPdfComp = ExistePDF()
                If NomPdfComp <> "" Then
                    MostrarPDF(NomPdfComp)
                End If
                e.Handled = True                
                e.SuppressKeyPress = True       
                Txt_Prot.Focus()
            End If
        End Sub

    martes, 11 de septiembre de 2012 15:05
  • pueba usando

    Txt_Prot.Select()

    Txt_Prot.Focus()

    para que tome el foco primero hay que seleccionarlo


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 11 de septiembre de 2012 15:17
  • Gracias Leandro por tu tiempo, pero no, tampoco me funciona...
    martes, 11 de septiembre de 2012 19:22
  • Pero por Default no está habilitado que al Dar ENTER cambie de control, si tienes eso en el Evento KeyPress del TextBox o del Form, valida cuando quieres que cambie de Control y cuando no, o si puedes poner el codigo que tengas en el evento KeyPress
    martes, 11 de septiembre de 2012 20:04
  • Este es mi código del KeyPress, que solo admite números:
     Private Sub Txt_Prot_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_Prot.KeyPress
            Select Case Asc(e.KeyChar)
                Case 48 To 57
                Case 8
                Case 13
                Case Else
                    e.Handled = True
            End Select
        End Sub
    La verdad nunca tuve la necesidad de trabajar con el Focus()... No estoy interiorizado en el tema
    martes, 11 de septiembre de 2012 20:22
  • Me olvide de aclarar que el foco se lo lleva "verPDF" un componente de Adobe Rearder, que es donde muestro pdfs. 
    martes, 11 de septiembre de 2012 21:23
  • Hola Amigo:

    Entonces deberas de establecer tu Formulario como activo para posteriormente regresar el foco al control textBox:

    Algo como esto:

    If NomPdfComp <> "" Then
       MostrarPDF(NomPdfComp)
       Me.Active()  
       Txt_Prot.Select()
       Txt_Prot.Focus()
    End If
    Pruebalo y comentas!

    Saludos desde Monterrey, N.L. México

    Luis Escobar :D


    martes, 11 de septiembre de 2012 22:03
  • Luis, lo probé con el Me.activate() pero tampoco funciona
    martes, 11 de septiembre de 2012 22:27
  • debes poner la instrucción del foco en el botón, no en el mismo txt, donde finaliza la instrucción que tienes en el botón (que te funciona) pone txtNombre.focus(), debe funcionar.


    miércoles, 12 de septiembre de 2012 13:51
  • no uso ningún botón, solo la tecla Enter
    miércoles, 12 de septiembre de 2012 14:16
  • Despues de la tecla Enter pon esto:

    Private Sub Txt_Prot_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_Prot.KeyPress Select Case Asc(e.KeyChar) Case 48 To 57 Case 8 Case 13 'Aquie llamas al metodo que te carga el Pdf inmediatamente despues retornas el enfoque al TextBox

    Me.Active() Txt_Prot.Select() Txt_Prot.Focus() Case Else e.Handled = True End Select End Sub

    Desconozco si el '13' pertenece a la tecla enter, esto es solo para ejemplificar.

    Saludos desde Monterrey, N.L. México

    Luis Escobar :D


    miércoles, 12 de septiembre de 2012 14:21
  • Luis, efectivamente el 13 pertenece a la tecla Enter, pero sigue sin funcionar
     Private Sub Txt_Prot_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_Prot.KeyPress
            Select Case Asc(e.KeyChar)
                Case 48 To 57
                Case 8
                Case 13
                    Dim NomPdfComp As String = ""
                    NomPdfComp = ExistePDF()
                    If NomPdfComp <> "" Then
                        MostrarPDF(NomPdfComp)
                        Me.Activate()
                        Txt_Prot.Select()
                        Txt_Prot.Focus()
                    End If
                Case Else
                    e.Handled = True
            End Select
        End Sub

    miércoles, 12 de septiembre de 2012 17:55
  • A mi me funciona si le paso antes el foco a cualquier otro campo y luego vuelvo al que me interesa. Así:

    Así:

    En la propiedad "Despues de actualizar" usa un codigo similar a este:

    Private Sub TuBox_AfterUpdate()
    If Trim(Me.TuBox & "") > ""
     Then
        ...
        Me.TuBox = ""
        Me.CualquierOtroBox.SetFocus
        Me.TuBox.SetFocus
    End If
    End Sub


    domingo, 21 de octubre de 2018 10:07
  • this.text_box.setfocus();

    Horacio Xochitemol Bautista

    domingo, 28 de octubre de 2018 13:07