Sólo puede llamar a la función de controlador de eventos directamente y especificar null
para el emisor y EventArgs.Empty
para los argumentos.
void ButtonClicked(object sender, EventArgs e)
{
// do stuff
}
// Somewhere else in your code:
button1.Click += new EventHandler(ButtonClicked);
// call the event handler directly:
ButtonClicked(button1, EventArgs.Empty);
O, más bien, que movería la lógica fuera del evento ButtonClicked
en su propia función, y luego el controlador de eventos y el otro código que tiene a su vez llamar a la nueva función.
void StuffThatHappensOnButtonClick()
{
// do stuff
}
void ButtonClicked(object sender, EventArgs e)
{
StuffThatHappensOnButtonClick();
}
// Somewhere else in your code:
button1.Click += new EventHandler(ButtonClicked);
// Simulate the button click:
StuffThatHappensOnButtonClick();
Este último método tiene la ventaja de permitirle separar su negocio y la lógica de la IU. Realmente nunca debería tener ninguna lógica comercial en los controladores de eventos de control.
, ya que esta pregunta todavía está viva (incluso tengo cierta reputación :), me gustaría hacer aquí una pequeña advertencia: si crees que tienes que hacer algo como esto en tu código, casi por Seguro que estás haciendo algo mal. Yo también. Probablemente tengas un mal diseño y es mejor que pases un tiempo reconsiderando lo que estás haciendo y por qué. – steavy
De hecho, creo que es una pregunta relevante, quería crear un menú emergente que incluyera genéricamente todos los elementos de una barra de herramientas y lo que el menú contextual ya tenía, el método PerformClick mencionado por itsme86 ayudó :-) – s1cart3r