2012-07-17 32 views
19

Wie kann ich SubGraphButton_Click(object sender, RoutedEventArgs args) von einer anderen Methode aus aufrufen?So rufen Sie ein Schaltflächenklickereignis von einer anderen Methode auf

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

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

können Sie Jquery wie folgt verwenden $ ("# buttonclientid"). click(); –

Antwort

42

können Sie die button_click Ereignis aufrufen, indem Sie einfach die Argumente, um es vorbei:

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

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

Sie können es einfach anrufen:

SubGraphButton_Click(sender, args); 

Nun, wenn Ihr SubGraphButton_Click etwas mit den args tut, könnte man in Schwierigkeiten, aber in der Regel tun Sie nichts mit ihnen.

4

Normalerweise ist der beste Weg, ein Ereignis auszulösen (klicken), anstatt die Methode direkt aufzurufen.

+2

Ihre Antwort würde verbessert, wenn Sie ein Beispielcode-Segment hinzufügen, das zeigt, was Sie meinen. –

0

es hinzufügen auf die Instanz des Click Delegierten:

ChildNode.Click += SubGraphButton_Click

, die mit dem Muster inkeeping .NET Ereignisse folgen (Beobachter).

24

Sie können es leicht tun, indem Sie das folgende Stück Code:

button.PerformClick(); 
+0

einfach schön! : 3 –

+1

Ich habe das immer benutzt, aber nachdem ich eine Menge Probleme damit hatte, denke ich, dass die gewählte Antwort ein viel sicherer Weg ist. – Burgo855

+0

@ Burgo855 Können Sie mir sagen, welche Art von Problem Sie hatten? – Pedram

6

können Sie verschiedene Ansätze durchführen, dies zu umgehen. Der beste Ansatz besteht darin, dass Sie, wenn Ihre beiden Schaltflächen den gleichen Job ausführen sollen, eine dritte Funktion definieren können, um den Job auszuführen. zum Beispiel:

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

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

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

aber wenn Sie noch fortbestehen wie es in der Art und Weise zu tun, die beste Aktion ist:

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

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

Sie das button_click Ereignis, indem anrufen ..

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

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

auch ohne den Weg ..

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

Für mich ist dies in 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

Verwenden InvokeOnClick Ereignis. es funktioniert auch, wenn die Schaltfläche unsichtbar/deaktiviert ist

Verwandte Themen