2010-03-05 20 views

Respuesta

28
btnTest_Click(null, null); 

siempre que el método no está usando cualquiera de estos parámetros (es muy común para no hacerlo.)

Para ser honesto, aunque esto es repulsivo. Si tiene código que necesita ser llamado que debe seguir la siguiente convención:

protected void btnTest_Click(object sender, EventArgs e) 
{ 
    SomeSub(); 
} 

protected void SomeOtherFunctionThatNeedsToCallTheCode() 
{ 
    SomeSub(); 
} 

protected void SomeSub() 
{ 
    // ... 
} 
+0

-1, demasiado código. – AMissico

+14

No. No hay demasiado código. No debe usar un método tanto para una llamada como para un evento. Es engañoso y confuso. –

+0

¿Dónde pone el manejo de excepciones? En los tres métodos? ¿Por qué crear métodos solo para llamar a un solo método? No es confuso Buttton_Click (nulo, nulo) es obvio. SomeOtherFunctionThatNeedsToCallTheCode no tiene sentido para mí. – AMissico

0

btnTest_Click (nuevo objeto(), EventArgs.Empty)

+1

pasando un objeto genérico parece una mala idea. mejor pasar el botón o nulo. –

+0

@John ¿Por qué te sientes así? –

+0

porque el remitente es normalmente el control, por lo que si el manejador de clics lo usa, esperará que 'remitente como control' funcione. –

0

Puede llamar al btnTest_Click al igual que cualquier otra función.

La forma más básica sería la siguiente:

btnTest_Click(this, null); 
4

Si el método no está utilizando ya sea sender o e que podía llamada:

btnTest_Click(null, null); 

Lo que probablemente debe considerar hacer es extrae el código de ese método en su propio método, al que puedes llamar tanto desde el controlador de evento de clic de botón como desde cualquier otro lugar del código que requiera la funcionalidad.

2

Es solo un método en su formulario, puede llamarlo como cualquier otro método. Sólo tienes que crear un EventArgs objeto de pasar a él, (y pasarlo el mango del botón como sender)

18

Uso

btnTest_Click(this, new EventArgs()); 
+4

' EventArgs.Empty'? – Tanzelax

+3

EventArgs.Empty estático de EventArgs() nuevos. Entonces EventArgs.Empty es más apropiado, pero crear nuevo es casi tan bueno. – AMissico

2

Simplemente llame

btnTest_Click (null, null);

Solo asegúrese de que no está tratando de usar ninguno de esos parámetros en la función.

1

Dentro de eventos de botón primer evento llamado segundo botón (ImageButton):

imagebutton_Click((ImageButton)this.divXXX.FindControl("imagbutton"), EventArgs.Empty); 

puede utilizar el estado del botón como CommandArgument del ImageButton si guarda algo en ella.

6

Todos los métodos anteriores no son buenos porque puede cambiar el nombre de la función de evento. El más fácil es:

btnTest.PerfromClick();

5

Puede usar el reflejo para invocar el método OnClick que activará los controladores de eventos click.

Me siento sucio publicando esto pero funciona ...

MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); 

clickMethodInfo.Invoke(buttonToInvoke, new object[] { EventArgs.Empty }); 
-1
btnTest.Click +=new EventHandler(btnTest_Click) 
Cuestiones relacionadas