Deshabilitar temporalmente el lostfocus

07/09/2005 - 09:34 por Silviall | Informe spam
Hola a todos,

Tengo una función que se ejecuta cuando se produce un lostfocus de un
textbox. El problema es que esta función tambien escribe en este textbox i
en otros. i se producen varios lostfocus. ¿Queria saber si hay alguna forma
de deshabilitar los eventos en el momento que la función escriba en estos
textbox?

Muchas gràcias,
Sílvia.

Preguntas similare

Leer las respuestas

#1 Carlos Gómez
07/09/2005 - 16:36 | Informe spam
Silviall wrote:

Hola a todos,

Tengo una función que se ejecuta cuando se produce un lostfocus de un
textbox. El problema es que esta función tambien escribe en este textbox i
en otros. i se producen varios lostfocus. ¿Queria saber si hay alguna
forma de deshabilitar los eventos en el momento que la función escriba en
estos textbox?

Muchas gràcias,
Sílvia.



En lugar de tener los eventos creados de forma automática, esto es:

Private Sub TextBox1_LostFocus(byval...) HANDLES TEXTBOX1.LOSTFOCUS

puedes añadirlos (y quitarlos) en tiempo de ejecución usando AddHandler y
RemoveHandler
Respuesta Responder a este mensaje
#2 Leonardo Azpurua [mvp vb]
07/09/2005 - 23:13 | Informe spam
"Silviall" escribió en el mensaje
news:
Hola a todos,

Tengo una función que se ejecuta cuando se produce un lostfocus de un
textbox. El problema es que esta función tambien escribe en este textbox i
en otros. i se producen varios lostfocus. ¿Queria saber si hay alguna
forma de deshabilitar los eventos en el momento que la función escriba en
estos textbox?



Hola, Silvia:

Eso era un problema clásico en los tiempos de VB5, cuando no existía el
evento Validate.

No explicas lo que quieres lograr, pero si lo que quieres es que el evento
LostFocus no se dispare para el control que tiene el foco en el momento en
que recuperas el foco para el control cuyo LostFocus estas ejecutando, basta
con que muevas el código al evento Validating, y coloques en False la
propiedad Cancel del parametro <e> (del tipo CancelEventArgs).

Tal vez podrías agregar a tu formulario una variable de tipo Boolean (por
ejemplo InhibirLostFocus). Cuando quieras que el lostFocus no se procese, la
pones a True, y en los manejadores de LostFocus consultas el valor de esa
variable antes de proceder o no con la ejecución de la función.

De todas maneras, la simple "necesidad" de inhibir el LostFocus sugiere
algun problema de diseño o construcción. Si explicas mejor loque quieres
hacer, es probable que te podamos sugerir una mejor solucion.

Salud!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida