none
Quitar foco de textbox o pasarlo a otro

    Pregunta

  • Hola,

    Tengo un textbox que al recibir el foco abro un formulario con un datagridview, al pulsar en el datagridview se debe cerrar el formulario y pasar al siguiente campo de texto.

    El problema es que cuando pulso el en datagridview el foco sigue en el mismo textbox con lo que se vuelve abrir el formulario con el datagridview...

    He probado con txt.focus y con txt.select pero nada, sigue pasándome lo mismo.

    jueves, 18 de agosto de 2016 11:17

Respuestas

  • En este caso deberías utilizar el evento Enter que salta cuando el control se convierte en el control activo del formulario.

    De esta forma al volver del formulario con el DataGridView no te saltará el evento de nuevo.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta RamonAZ viernes, 19 de agosto de 2016 8:57
    jueves, 18 de agosto de 2016 11:26

Todas las respuestas

  • En este caso deberías utilizar el evento Enter que salta cuando el control se convierte en el control activo del formulario.

    De esta forma al volver del formulario con el DataGridView no te saltará el evento de nuevo.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta RamonAZ viernes, 19 de agosto de 2016 8:57
    jueves, 18 de agosto de 2016 11:26
  • Mira a ver si realmente estas haciendo el txt.Focus sobre el formulario original desde el que llamaste al nuevo formulario. Si haces un "New" del formulario de abajo desde el formulario del grid, eso crea una nueva copia (invisible) del formulario, y si en esa copia cambias el foco, logicamente no hace nada sobre tu textbox original, que sigue teniendo el foco cuando le quitas de encima el formulario del grid.
    jueves, 18 de agosto de 2016 11:28
  • Hola RamonAZ,

    [-] ... Tengo un textbox que al recibir el foco abro un formulario con un datagridview, al pulsar en el datagridview se debe cerrar el formulario y pasar al siguiente campo de texto.

    Entonces estás abriendo el formulario como un diálogo o no?

    Puedes usar el evento Enter del textBox1 para mostrar el formulario.

    - Form1 :

        Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
            Using f2 As New Form2
                If f2.ShowDialog = DialogResult.OK Then
                    'Si el resultado fue OK hace algo....
                End If
            End Using
            TextBox2.Focus()
        End Sub

    Como puedes ver, cuando termina de hacer la operación con el form abierto, este se posiciona en el textBox2, asignándole el foco.

    - Form2 : En este caso el resultado es Ok cuando hace click en una celda.

       Private Sub DataGridView1_CellClick(sender....
            Me.DialogResult = DialogResult.OK
            '....etc
        End Sub

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    jueves, 18 de agosto de 2016 18:29