2012-07-17 59 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事件。它工作,即使按鈕是不可見/禁用

相關問題