Ejecutar un evento por codigo

21/06/2005 - 19:40 por Kylix 2001 | Informe spam
Buenas tardes

Me gustaria ejecutar los eventos asignados a la propiedad "Click" de un
control "Panel", ya que no dispongo del evento "PerformClick" de la clase
"Buton".

He intentando "this.panel1.Click(this.panel1,new System.EventArgs());" y al
compilar me da error de que solo puedo usar los operadores "+=" y "-=".

Alguna idea para poder ejecutar los metodos asociados al evento "Click"?

Gracias por todo y saludos.

Preguntas similare

Leer las respuestas

#1 Angel J. Hernández M.
21/06/2005 - 21:03 | Informe spam
Ok... déjame ver si te entiendo... deseas ejecutar el click de un panel,
cierto?

Puedes hacerlo así (Load del formulario)
this.panel1.Click += new EventHandler(panel_click);

debes escribir el método que se encarga de manejar el click en este caso es
panel_click

private void panel_click(object sender, EventArgs e) {
// Hacer algo acá...
}

Perfecto... este procedimiento puedes invocarlo desde alguna otra parte
pasando los parámetros correctos... Un ejemplo

panel_click(this, new EventArgs());

Espero te sirva,

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com



"Kylix 2001" wrote in message
news:
Buenas tardes

Me gustaria ejecutar los eventos asignados a la propiedad "Click" de un
control "Panel", ya que no dispongo del evento "PerformClick" de la clase
"Buton".

He intentando "this.panel1.Click(this.panel1,new System.EventArgs());" y
al compilar me da error de que solo puedo usar los operadores "+=" y "-=".

Alguna idea para poder ejecutar los metodos asociados al evento "Click"?

Gracias por todo y saludos.


Respuesta Responder a este mensaje
#2 Kylix 2001
22/06/2005 - 15:02 | Informe spam
No, perdona igual no me explique bien.

Deseo ejecutar los metodos asignados al evento "Click" sin conocerlos ya que
es en tiempo de ejecucion y no conozco los metodos para llamarlos
directamente. Alguna idea?

Gracias y un saludo

"Angel J. Hernández M." escribió en el mensaje
news:
Ok... déjame ver si te entiendo... deseas ejecutar el click de un panel,
cierto?

Puedes hacerlo así (Load del formulario)
this.panel1.Click += new EventHandler(panel_click);

debes escribir el método que se encarga de manejar el click en este caso
es panel_click

private void panel_click(object sender, EventArgs e) {
// Hacer algo acá...
}

Perfecto... este procedimiento puedes invocarlo desde alguna otra parte
pasando los parámetros correctos... Un ejemplo

panel_click(this, new EventArgs());

Espero te sirva,

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com



"Kylix 2001" wrote in message
news:
Buenas tardes

Me gustaria ejecutar los eventos asignados a la propiedad "Click" de un
control "Panel", ya que no dispongo del evento "PerformClick" de la clase
"Buton".

He intentando "this.panel1.Click(this.panel1,new System.EventArgs());" y
al compilar me da error de que solo puedo usar los operadores "+=" y
"-=".

Alguna idea para poder ejecutar los metodos asociados al evento "Click"?

Gracias por todo y saludos.






Respuesta Responder a este mensaje
#3 Angel J. Hernández M.
26/06/2005 - 20:13 | Informe spam
Ah... ok... entonces para ello puedes hacer uso de Reflection además de la
función GetInvocationList (de la clase delegado). El delegado EventHandler
deriva de dicha clase y es multidifusión por ello funciona. El método antes
mencionado te devuelve un arreglo con todos los manejadores de eventos
asignados al evento click. A continuación tienes el código.

EventHandler eh = new EventHandler(button1_Click);
button1.Click += eh;
Type t = button1.GetType();
BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic |
BindingFlags.Public | BindingFlags.InvokeMethod;
EventInfo ei = t.GetEvent("Click");
Type t2 = ei.EventHandlerType;
object p = ei.EventHandlerType.InvokeMember("GetInvocationList", flag, null,
new EventHandler(button1_Click), null);
EventHandler eh2 = (EventHandler) ((object[]) p)[0];
System.Diagnostics.Trace.WriteLine("Método: "+ eh2.Method.Name);
System.Diagnostics.Trace.WriteLine("Target: "+ eh2.Target.ToString());

Espero sea de utilidad.

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com




"Kylix 2001" escribió en el mensaje
news:
No, perdona igual no me explique bien.

Deseo ejecutar los metodos asignados al evento "Click" sin conocerlos ya
que es en tiempo de ejecucion y no conozco los metodos para llamarlos
directamente. Alguna idea?

Gracias y un saludo

"Angel J. Hernández M." escribió en el mensaje
news:
Ok... déjame ver si te entiendo... deseas ejecutar el click de un panel,
cierto?

Puedes hacerlo así (Load del formulario)
this.panel1.Click += new EventHandler(panel_click);

debes escribir el método que se encarga de manejar el click en este caso
es panel_click

private void panel_click(object sender, EventArgs e) {
// Hacer algo acá...
}

Perfecto... este procedimiento puedes invocarlo desde alguna otra parte
pasando los parámetros correctos... Un ejemplo

panel_click(this, new EventArgs());

Espero te sirva,

Saludos,


Angel J. Hernández M.
MCP - MCAD - MCSD - MCDBA
http://groups.msn.com/desarrolladoresmiranda
http://www.consein.com



"Kylix 2001" wrote in message
news:
Buenas tardes

Me gustaria ejecutar los eventos asignados a la propiedad "Click" de un
control "Panel", ya que no dispongo del evento "PerformClick" de la
clase "Buton".

He intentando "this.panel1.Click(this.panel1,new System.EventArgs());" y
al compilar me da error de que solo puedo usar los operadores "+=" y
"-=".

Alguna idea para poder ejecutar los metodos asociados al evento "Click"?

Gracias por todo y saludos.










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