2012-07-17 55 views
19

如何从另一种方法调用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(). 
} 
+1

你可以像这样使用Jquery $(“#buttonclientid”)。click(); – 2012-07-17 08:18:40

回答

42

您可以通过传递的参数调用它的button_click事件:

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

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

你可以简单地把它叫做:现在

SubGraphButton_Click(sender, args); 

,如果你不SubGraphButton_Click与ARGS的东西,你可能会遇到麻烦,但通常你不跟他们做任何事。

4

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

+2

如果您添加了演示您的意思的示例代码段,则可以提高您的答案。 – 2016-12-19 18:56:53

0

将它添加到Click委托的实例:

ChildNode.Click += SubGraphButton_Click

其与模式inkeeping .NET事件跟随(观察者)。

24

您可以轻松地通过下面的代码做到这一点:

button.PerformClick(); 
+0

简单美丽! :3 – 2016-09-27 01:22:56

+1

我以前总是用这个,但是在遇到很多问题之后,我认为选择的答案是一个更加安全的方法。 – Burgo855 2017-03-19 05:56:59

+0

@ Burgo855你能告诉我你有什么样的问题吗? – Pedram 2017-03-19 21:28:53

6

您可以执行不同的方法来解决这个问题。最好的方法是,如果你的两个按钮都假设做同样的工作,你可以定义第三个功能来完成这项工作。例如:

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(); 
} 
9

你可以通过拨打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()); 
} 
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

对于我这个曾在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

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

相关问题