none
Tengo problemas usando SelectNextControl

    Pregunta

  • Hola amigos del foro: Espero pueda darme a entender con un programita en VB.Net 2012. Tengo una serie de TextBox, debidamente ordenados usando Tab Order, sobre un formulario. Tengo además sobre este mismo formulario un TabControl con el nombre TabControl1 y sobre este TabControl tengo otra serie ordenada de TextBox.
    En cada Enter en cualquier TextBox hago la siguiente instrución Me.SelectNextControl(Me.ActiveControl, True, True, True, True). El problema es que cuando estoy en la primera serie de TextBox y estoy en el último TextBox y le doy Enter, supongo yo que se debería de ubicar en el primer TextBox de la serie que tengo en el TabControl, pero lo que hace es ubicarse Sobre la primera pestaña del TabControl.
    ¿Por que sucede esto si tengo la propiedad de este TabControl TabStop=False? ¿Cómo hago para que salte del último TextBox de la primera serie al primer TextBox que está sobre el TabControl?
    Espero puedan ayudarme.

    Saludos.
    viernes, 16 de septiembre de 2016 3:50

Respuestas

  • Que el TabControl tenga su propiedad TabStop a False hace que no te puedas posicionar en el pulsando la tecla tabulador pero tu estás forzando el posicionamiento con SelectNextControl que lo que hace es pasar el foco al siguiente control por el TabOrder.

    Si estás colocando SelectNextControl en cada pulsación de la tecla Enter, supongo que a nivel del formulario estarás capturando la pulsación del teclado, solo tienes que hacer esa acción solo si el foco no está en el último TextBox y si lo está pasar el foco al primero:

    If UltimoTextBox.Focused Then
        PrimerTextBox.Focus()
    Else
        SelectNextControl(...)
    End If


    Saludos, Javier J

    • Marcado como respuesta Carlos Cuenta viernes, 16 de septiembre de 2016 15:46
    viernes, 16 de septiembre de 2016 6:44

Todas las respuestas

  • Que el TabControl tenga su propiedad TabStop a False hace que no te puedas posicionar en el pulsando la tecla tabulador pero tu estás forzando el posicionamiento con SelectNextControl que lo que hace es pasar el foco al siguiente control por el TabOrder.

    Si estás colocando SelectNextControl en cada pulsación de la tecla Enter, supongo que a nivel del formulario estarás capturando la pulsación del teclado, solo tienes que hacer esa acción solo si el foco no está en el último TextBox y si lo está pasar el foco al primero:

    If UltimoTextBox.Focused Then
        PrimerTextBox.Focus()
    Else
        SelectNextControl(...)
    End If


    Saludos, Javier J

    • Marcado como respuesta Carlos Cuenta viernes, 16 de septiembre de 2016 15:46
    viernes, 16 de septiembre de 2016 6:44
  •  Gracias  Javier Jiménez , pensé que existía una propiedad similar al TabStop para evitar este salto a un control no deseados. Pero bueno, agradecido por tu ayuda.                                                                                 
    viernes, 16 de septiembre de 2016 15:48