如何从另一个方法调用按钮单击事件

如何从另一个方法调用SubGraphButton_Click(object sender, RoutedEventArgs args)

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

您可以通过简单地将参数传递给它来调用button_click事件:

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

您可以通过以下代码轻松完成此操作(假设您的按钮名称为btnButton ):

 btnButton.PerformClick(); 

你可以通过传递来调用button_click事件..

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

也没有通过..

 private void SubGraphButton_Click(object sender, EventArgs args) { } private void Some_Method() //this method is called { SubGraphButton_Click(new object(), new EventArgs()); } 

您可以执行不同的方法来解决此问题。 最好的方法是,如果您的两个按钮都假设执行相同的工作,您可以定义第三个function来完成工作。 例如 :

 private void SubGraphButton_Click(object sender, RoutedEventArgs args) { myJob() } private void ChildNode_Click(object sender, RoutedEventArgs args) { myJob() } private void myJob() { // Your code here } 

但如果你仍坚持按照自己的方式行事,最好的行动是:

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

通常更好的方法是触发事件(单击)而不是直接调用方法。

 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);" } } 

你可以简单地称它为:

 SubGraphButton_Click(sender, args); 

现在,如果您的SubGraphButton_Click使用args执行某些操作,您可能会遇到麻烦,但通常您不会对它们执行任何操作。

在WPF中,您可以通过以下方式轻松完成:

 this.button.RaiseEvent(new RoutedEventArgs(Button.ClickEvent)); 

将其添加到Click委托的实例中:

ChildNode.Click += SubGraphButton_Click

这是模式.NET事件跟随(Observer)的内容。

对我来说这适用于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); } } 

使用InvokeOnClick事件。 即使按钮不可见/禁用,它也能工作