none
Poner el foco a un TextBox que tiene una máscara RRS feed

  • Pregunta

  • Buenas...

    Tengo en algunos formularios un TextBox el cual tiene una mascara para que se ingrese con determinado formato... el tema es que cuando le hago al TextBox el .Focus() desde el code behind no me pone el foco... me pasa eso solo con el que tiene la mascara, con el resto me funciona el foco perfectamente!

    Como puedo solucionarlo?

    Gracias, saludos

    miércoles, 22 de septiembre de 2010 20:14

Respuestas

  • > Tengo en algunos formularios un TextBox el cual tiene una mascara
    > para que se ingrese con determinado formato... el tema es que
    > cuando le hago al TextBox el .Focus()

    Hola:

    Es bastante extraño lo que nos comentas. Si te refieres a seleccionar el texto del control cuando éste recibe el foco, simplemente tienes que habilitar el evento GotFocus del control MaskedTextBox. Utilizando código de Visual Basic .NET, ejecutarías:

         Private Sub MaskedTextBox1_GotFocus( _
            ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles MaskedTextBox1.GotFocus

            ' Seleccionamos todo el texto existente en el control.
            MaskedTextBox1.SelectAll()

        End Sub

    Ten en cuenta que una cosa es pasar el foco a un control (método Focus) y otra diferente seleccionar el texto existente en un control de texto (método SelectAll), aunque éste tenga máscara.

    Desde luego, vuelvo a insistir que no puedo reproducir lo que nos comentas, porque al llamar al método Focus del control, digo yo que éste recibirá el foco. :-)

    > yo necesito que al cargar el formulario el foco esté en ese text box que tiene la mascara

    Si el valor de la propiedad TabIndex del control MaskedTextBox es 0, y siempre y cuando dicho control pueda recibir el foco (propiedades Enabled y TabStop establecidas en True), entiendo que el control deberá recibir el foco cuando muestres el formulario que lo contiene.

    Un saludo


    Enrique Martínez [MS MVP - VB]
    viernes, 24 de septiembre de 2010 3:44

Todas las respuestas

  • Hola MarcosGn

    puedes intentar con este codigo

    //lo primero declara un evento LostFocus

    private void Form1_Load(object Sender,EventArgs e)

    {

    //este es el textbox enmascarado

    textbox1.LostFocus += new EventHandler(AsignarFocoTb);

    }

    //Evento derivado

    private void AsignarFocoTb(Object o , EventArgs e)

    {

    //es es el textbox enmascarado

    this.textbox1.Focus();

    }

    lo que hace este codigo es que cuando el control textbox

    pierde el foco, es ponerle el foco de vuelta;

     

    espero que te sirva este codigo Att:DavCker


    DavCkers- White Debugger, Assembler and Dissambler IP Trace Mexico-Guadalajara-Jalisco Tengo 16 años Mi nombre es Davis
    jueves, 23 de septiembre de 2010 6:00
  • Hola, gracias por tu respuesta!

    He probado el codigo que me diste, pero yo necesito que al cargar el formulario el foco esté en ese text box que tiene la mascara, y con ese codigo no queda asi y luego de que yo hago clic en el textbox para escribirle, ya no puedo cambiar a otro textbox.

    Gracias de nuevo y espero tu respuesta!

    viernes, 24 de septiembre de 2010 0:38
  • > Tengo en algunos formularios un TextBox el cual tiene una mascara
    > para que se ingrese con determinado formato... el tema es que
    > cuando le hago al TextBox el .Focus()

    Hola:

    Es bastante extraño lo que nos comentas. Si te refieres a seleccionar el texto del control cuando éste recibe el foco, simplemente tienes que habilitar el evento GotFocus del control MaskedTextBox. Utilizando código de Visual Basic .NET, ejecutarías:

         Private Sub MaskedTextBox1_GotFocus( _
            ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles MaskedTextBox1.GotFocus

            ' Seleccionamos todo el texto existente en el control.
            MaskedTextBox1.SelectAll()

        End Sub

    Ten en cuenta que una cosa es pasar el foco a un control (método Focus) y otra diferente seleccionar el texto existente en un control de texto (método SelectAll), aunque éste tenga máscara.

    Desde luego, vuelvo a insistir que no puedo reproducir lo que nos comentas, porque al llamar al método Focus del control, digo yo que éste recibirá el foco. :-)

    > yo necesito que al cargar el formulario el foco esté en ese text box que tiene la mascara

    Si el valor de la propiedad TabIndex del control MaskedTextBox es 0, y siempre y cuando dicho control pueda recibir el foco (propiedades Enabled y TabStop establecidas en True), entiendo que el control deberá recibir el foco cuando muestres el formulario que lo contiene.

    Un saludo


    Enrique Martínez [MS MVP - VB]
    viernes, 24 de septiembre de 2010 3:44