Copiar eventos de un control a otro

10/07/2006 - 12:03 por Mochu | Informe spam
Buenas, a ver si alguien me puede resolver una dudilla que tengp con eventos

La idea es que dado un boton con ciertos eventos definidos otro boton tome
para el los eventos de este, es decir, que si button1.Click += new
eventhandler (metodo), alguna forma de decirle que button2.click use el
mismo metodo que button1.Click.

Muchas Gracias

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
10/07/2006 - 13:18 | Informe spam
"Mochu" wrote in message
news:%
La idea es que dado un boton con ciertos eventos definidos otro boton tome
para el los eventos de este, es decir, que si button1.Click += new
eventhandler (metodo), alguna forma de decirle que button2.click use el
mismo metodo que button1.Click.



Desgraciadamente button1.Click solo permite asignar valores, pero no
leer lo que tiene asignado.
Como alternativa, se me ocurre que en el button2.Click podrías invocar
el OnClick del button1, con lo cual al hacer el click sobre el botón 2 se
dispararán los mismos eventos que cuando se hace click sobre el botón 1.
Dado que OnClick es un método protegido, para poderlo invocar desde fuera
tendrás que usar reflexión. Por ejemplo, asi:

private void button2_Click(object sender, EventArgs e)
{
MethodInfo metodoOnClick =
button1.GetType().GetMethod("OnClick", BindingFlags.NonPublic |
BindingFlags.Instance);
metodoOnClick.Invoke(button1, new object[] { e });
}

El único inconveniente que le veo a esta forma de operar es que las
rutinas de tratamiento del evento recibirán en el "sender" el button1 en
lugar del button2.
Respuesta Responder a este mensaje
#2 Javier Garcia
11/07/2006 - 08:06 | Informe spam
Muchas gracias alberto, la idea es buena, pero necesito que en el render
reciba el boton que realmente lanzo el evento, ya que lo repito
chorrocientas veces y eso, necesito saber cual es el metodo que invoca el
onclick para asignarselo a todos.

No podria conseguirse con

private void button2_Click(object sender, EventArgs e)
{
MethodInfo metodoOnClick =
button1.GetType().GetMethod("OnClick", BindingFlags.NonPublic |
BindingFlags.Instance);
metodoOnClick.Invoke(button1, new object[] { e });
}



modificando

metodoOnClick.Invoke(button2, new object[] { e });


Muchas gracias

"Alberto Poblacion"
escribió en el mensaje news:%23v$
"Mochu" wrote in message
news:%
La idea es que dado un boton con ciertos eventos definidos otro boton
tome para el los eventos de este, es decir, que si button1.Click += new
eventhandler (metodo), alguna forma de decirle que button2.click use el
mismo metodo que button1.Click.



Desgraciadamente button1.Click solo permite asignar valores, pero no
leer lo que tiene asignado.
Como alternativa, se me ocurre que en el button2.Click podrías invocar
el OnClick del button1, con lo cual al hacer el click sobre el botón 2 se
dispararán los mismos eventos que cuando se hace click sobre el botón 1.
Dado que OnClick es un método protegido, para poderlo invocar desde fuera
tendrás que usar reflexión. Por ejemplo, asi:

private void button2_Click(object sender, EventArgs e)
{
MethodInfo metodoOnClick =
button1.GetType().GetMethod("OnClick", BindingFlags.NonPublic |
BindingFlags.Instance);
metodoOnClick.Invoke(button1, new object[] { e });
}

El único inconveniente que le veo a esta forma de operar es que las
rutinas de tratamiento del evento recibirán en el "sender" el button1 en
lugar del button2.




Respuesta Responder a este mensaje
#3 Alberto Poblacion
11/07/2006 - 22:19 | Informe spam
"Javier Garcia" wrote in message
news:%
No podria conseguirse con
metodoOnClick.Invoke(button2, new object[] { e });



No. Eso dispararía el Click del botón 2, que no tiene nada conectado. De
lo que se trata es de ejecutar el código asociado al click del botón 1.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida