如何从另一个方法调用按钮单击事件
如何从另一个方法调用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事件。 即使按钮不可见/禁用,它也能工作