Activar/Desactivar evento por código

02/02/2005 - 00:24 por Tio | Informe spam
hola!

Tengo un evento de un componente... ¿como puedo hacer mediante código que
dicho evento no se ejecute y luego cuando quiera volver a hacer que el
evento esté activo?.

gracias!

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
02/02/2005 - 01:02 | Informe spam
Hola,

Usa:

Myform.MyEvent += new testEvent(MyMethod);

y

Myform.MyEvent -= new testEvent(MyMethod);

para activar y desactivar el evento desde código.

Slds - Octavio

"Tio" escribió en el mensaje
news:
hola!

Tengo un evento de un componente... ¿como puedo hacer mediante código que
dicho evento no se ejecute y luego cuando quiera volver a hacer que el
evento esté activo?.

gracias!

Respuesta Responder a este mensaje
#2 Steven Lewis
02/02/2005 - 04:49 | Informe spam
Realmente existe una colección de delegados para los eventos asociados a
cada objeto.

Cuando agregas uno con += lo que estás haciendo es poniendo el delegado al
final de la colección y cuando lo quitas (-=) simplemente lo quitas de esa
colección.

Ojo que si repites la agregación del evento (es decir, lo agregas más de 1
vez) se ejecutará tantas veces como aparezca en esa colección, y en el orden
en que fue agregado (por ejemplo si lo agregas de primero y de tercero).

En este orden de ideas puedes tener varias funciones que se ejecuten en un
evento porque has agregado su delegado.

No estoy seguro si la versión 2001 lo permite, pero la versión 2003 no te
deja hacer algo así como esto
Myform.MyEvent = new testEvent(MyMethod);

Sin el + o el - porque de alguna manera es reinicializar la colección.

Aprovecho este espacio para preguntar si alguien sabe cómo recorrer esa
colección para saber si un evento (delegado) ya fue agregado o no?

Saludos

Steven Lewis


"Octavio Hernandez" escribió en el mensaje
news:
Hola,

Usa:

Myform.MyEvent += new testEvent(MyMethod);

y

Myform.MyEvent -= new testEvent(MyMethod);

para activar y desactivar el evento desde código.

Slds - Octavio

"Tio" escribió en el mensaje
news:
hola!

Tengo un evento de un componente... ¿como puedo hacer mediante código que
dicho evento no se ejecute y luego cuando quiera volver a hacer que el
evento esté activo?.

gracias!





Respuesta Responder a este mensaje
#3 Tio
02/02/2005 - 14:43 | Informe spam
Gracias! como siempre!
Respuesta Responder a este mensaje
#4 Octavio Hernandez
02/02/2005 - 23:25 | Informe spam

Aprovecho este espacio para preguntar si alguien sabe cómo recorrer esa
colección para saber si un evento (delegado) ya fue agregado o no?




Algo así:

foreach(Delegate d in myEventDelegate.GetInvocationList())
{
Trace.WriteLine(d.Method);
Trace.WriteLine(d.Target);
}

Slds,

Octavio
Respuesta Responder a este mensaje
#5 Steven Lewis
07/02/2005 - 04:02 | Informe spam
Lo probaré... mil gracias!!!

Steven Lewis

"Octavio Hernandez" escribió en el mensaje
news:
>
Aprovecho este espacio para preguntar si alguien sabe cómo recorrer esa
colección para saber si un evento (delegado) ya fue agregado o no?




Algo así:

foreach(Delegate d in myEventDelegate.GetInvocationList())
{
Trace.WriteLine(d.Method);
Trace.WriteLine(d.Target);
}

Slds,

Octavio


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