Principales respuestas
Seleccionar el texto de un texbox cuando recibe el foco y algo mas...

Pregunta
-
Hola Chicos
Mi consulta es la siguiente: Necesito seleccionar el texto de un texbox cuando este recibe el foco, yo se que se hace con "SelectAll()" en el evento Gotfocus del control, aqui es donde viene el "algo mas..." imaginense tener 200 Textbox en un formulario y escribir esas mismas veces las lineas para el evento de cada control (no son 200 pero si son bastantes...), debe haber una forma de escribir la linea una sola vez y que sea usada para cualquier Textbox que reciba el foco, no sirve el "For Each Next ni nada de eso, no quiero saber que control tiene el foco necesito saber cual lo recibe, capturar el Name en una variable o algo que pueda usar para no tener que reescribir el codigo para cada control, desde ya gracias. :o)
P.D. Olvide decir que estoy programando en VB .Net, mis disculpas- Editado fertrones0 lunes, 20 de marzo de 2017 3:02
Respuestas
-
Hola fertrones0,
Lo que tendrías que hacer es un 'For Each' buscando los controles TextBox de tu formulario y enlazarlos a un mismo evento Enter (el cual se ejecuta cuando el control se convierte en el control activo del formulario, valga la redundancia).
Cuando se carga el formulario hacer el recorrido :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Recorre todo los TextBox del formulario y los enlaza al mismo evento Enter For Each tb As TextBox In Controls.OfType(Of TextBox) AddHandler tb.Enter, AddressOf txtFocus Next End Sub
Y en el método que ejecutará cuando se ejecute el evento enlazado :
Private Sub txtFocus(sender As Object, e As EventArgs) 'Obtenemos el TextBox que ejecutó en evento Dim txt As TextBox = CType(sender, TextBox) 'Seleccionamos el texto del TextBox txt.SelectAll() End Sub
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta fertrones0 lunes, 20 de marzo de 2017 3:50
-
Hola Joel, muchas gracias por tu respuesta, te cuento que con TAB funciona bien, pero al recibir el foco por click del mouse no, entonces le puse esta linea:
AddHandler tb.Click, AddressOf txtFocus
y funciona, pero el problema entonces es que no puedo posicionarme con el mouse para modificar la parte que quiero porque vuelve a seleccionar todo... alguna idea?
Hola fertrones0,
Claro, porque al seleccionar el texto tienes que hacer click y el evento se dispara. En el código que mostré anteriormente, cambia esta línea :
Seleccionamos el texto del TextBox txt.SelectAll()
Por esta otra : (Si no te funciona, ¿Qué framework estás utilizando?)
'Seleccionamos el texto del TextBox BeginInvoke(TryCast(Sub() txt.SelectAll(), Action))
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta fertrones0 lunes, 20 de marzo de 2017 4:03
Todas las respuestas
-
Hola fertrones0,
Lo que tendrías que hacer es un 'For Each' buscando los controles TextBox de tu formulario y enlazarlos a un mismo evento Enter (el cual se ejecuta cuando el control se convierte en el control activo del formulario, valga la redundancia).
Cuando se carga el formulario hacer el recorrido :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'Recorre todo los TextBox del formulario y los enlaza al mismo evento Enter For Each tb As TextBox In Controls.OfType(Of TextBox) AddHandler tb.Enter, AddressOf txtFocus Next End Sub
Y en el método que ejecutará cuando se ejecute el evento enlazado :
Private Sub txtFocus(sender As Object, e As EventArgs) 'Obtenemos el TextBox que ejecutó en evento Dim txt As TextBox = CType(sender, TextBox) 'Seleccionamos el texto del TextBox txt.SelectAll() End Sub
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta fertrones0 lunes, 20 de marzo de 2017 3:50
-
Hola Joel, muchas gracias por tu respuesta, te cuento que con TAB funciona bien, pero al recibir el foco por click del mouse no, entonces le puse esta linea:
AddHandler tb.Click, AddressOf txtFocus
y funciona, pero el problema entonces es que no puedo posicionarme con el mouse para modificar la parte que quiero porque vuelve a seleccionar todo... alguna idea?
-
Hola Joel, muchas gracias por tu respuesta, te cuento que con TAB funciona bien, pero al recibir el foco por click del mouse no, entonces le puse esta linea:
AddHandler tb.Click, AddressOf txtFocus
y funciona, pero el problema entonces es que no puedo posicionarme con el mouse para modificar la parte que quiero porque vuelve a seleccionar todo... alguna idea?
Hola fertrones0,
Claro, porque al seleccionar el texto tienes que hacer click y el evento se dispara. En el código que mostré anteriormente, cambia esta línea :
Seleccionamos el texto del TextBox txt.SelectAll()
Por esta otra : (Si no te funciona, ¿Qué framework estás utilizando?)
'Seleccionamos el texto del TextBox BeginInvoke(TryCast(Sub() txt.SelectAll(), Action))
Saludos.
JC NaupaCrispín
Lima - Perú
La magia no existe, la programación SI- Marcado como respuesta fertrones0 lunes, 20 de marzo de 2017 4:03
-