2012-07-17 21 views
19

¿Cómo puedo llamar al SubGraphButton_Click(object sender, RoutedEventArgs args) desde otro método?Cómo llamar a un evento de clic de botón desde otro método

private void SubGraphButton_Click(object sender, RoutedEventArgs args) 
{ 
} 

private void ChildNode_Click(object sender, RoutedEventArgs args) 
{ 
    // call SubGraphButton-Click(). 
} 
+1

puede usar Jquery como este $ ("# buttonclientid"). haga clic en(); –

Respuesta

42

Puede llamar al evento Button_Click simplemente pasando los argumentos a ella:

private void SubGraphButton_Click(object sender, RoutedEventArgs args) 
{ 
} 

private void ChildNode_Click(object sender, RoutedEventArgs args) 
{ 
    SubGraphButton_Click(sender, args); 
} 
2

Usted puede simplemente llama:

SubGraphButton_Click(sender, args); 

Ahora, si su SubGraphButton_Click hace algo con los argumentos, usted podría estar en problemas, pero por lo general no se hace nada con ellos.

4

Por lo general, la mejor manera es activar un evento (clic) en lugar de llamar al método directamente.

+2

Su respuesta mejoraría si agregara un segmento de código de ejemplo que demuestre lo que quiere decir. –

0

añadirlo a la instancia de la Haga clic delegado:

ChildNode.Click += SubGraphButton_Click

que está a tono con el patrón Los sucesos .NET siguen (observador).

24

Puede hacerlo fácilmente por el siguiente fragmento de código:

button.PerformClick(); 
+0

simplemente hermoso! : 3 –

+1

Solía ​​usar esto siempre, pero después de tener muchos problemas con esto, creo que la respuesta elegida es mucho más segura. – Burgo855

+0

@ Burgo855 ¿Podría decirme qué tipo de problema tenía? – Pedram

6

Puede realizar diferentes enfoques para evitar este. El mejor enfoque es, si se supone que sus dos botones hacen el mismo trabajo, puede definir una tercera función para hacer el trabajo. por ejemplo:

private void SubGraphButton_Click(object sender, RoutedEventArgs args) 
{ 
    myJob() 
} 

private void ChildNode_Click(object sender, RoutedEventArgs args) 
{ 
    myJob() 
} 

private void myJob() 
{ 
    // Your code here 
} 

pero si sigue persistiendo en hacerlo en su camino, la mejor acción es:

private void SubGraphButton_Click(object sender, RoutedEventArgs args) 
{ 
} 

private void ChildNode_Click(object sender, RoutedEventArgs args) 
{ 
    SubGraphButton_Click.PerformClick(); 
} 
9

puede llamar al evento Button_Click pasando ..

private void SubGraphButton_Click(object sender, RoutedEventArgs args) 
{ 
} 

private void ChildNode_Click(object sender, RoutedEventArgs args) 
{ 
    SubGraphButton_Click(sender, args); 
} 

también sin pasar ..

private void SubGraphButton_Click(object sender, EventArgs args) 
{ 
} 

private void Some_Method() //this method is called 
{ 
    SubGraphButton_Click(new object(), new EventArgs()); 
} 
3
private void PictureBox1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("Click Succes"); 
} 

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e) 
{ 
    if (e.KeyChar == 13) 
    { 
     PictureBox1_Click(sender, e); //or try this one "this.PictureBox1_Click(sender, AcceptButton);" 
    } 
} 
0

Para mí esto funcionaba en WPF

private void Window_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
     { 
      RoutedEventArgs routedEventArgs = new RoutedEventArgs(ButtonBase.ClickEvent, Button_OK); 
      Button_OK.RaiseEvent(routedEventArgs); 
     } 
    } 
0

caso Uso InvokeOnClick. funciona incluso si el botón es invisible/deshabilitado

Cuestiones relacionadas