Ich habe eine Schaltfläche in meiner ASPX-Datei namens BtnTest. Die .cs-Datei hat eine Funktion, die aufgerufen wird, wenn auf die Schaltfläche geklickt wird.
btnTest_Click(object sender, EventArgs e)
Wie kann ich diese Funktion aus meinem Code heraus aufrufen (d. H. Ohne auf die Schaltfläche zu klicken)?
btnTest_Click(null, null);
Vorausgesetzt, dass die Methode keinen dieser Parameter verwendet (ist sehr üblich.)
Um ehrlich zu sein, ist das icky. Wenn Sie Code haben, der aufgerufen werden muss, sollten Sie die folgende Konvention beachten:
protected void btnTest_Click(object sender, EventArgs e)
{
SomeSub();
}
protected void SomeOtherFunctionThatNeedsToCallTheCode()
{
SomeSub();
}
protected void SomeSub()
{
// ...
}
Benutzen
btnTest_Click( this, new EventArgs() );
Alle oben genannten Methoden sind nicht geeignet, da Sie möglicherweise den Namen der Ereignisfunktion ändern. Das einfachste ist:
btnTest.PerfromClick();
Sie können Reflection verwenden, um die OnClick
-Methode aufzurufen, die die Click-Ereignishandler auslöst.
Ich fühle mich schmutzig, aber es funktioniert ...
MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
clickMethodInfo.Invoke(buttonToInvoke, new object[] { EventArgs.Empty });
Wenn die Methode weder sender
noch e
verwendet, können Sie könnten aufrufen:
btnTest_Click(null, null);
Was Sie wahrscheinlich in Betracht ziehen sollten, ist das Extrahieren des Codes aus dieser Methode in eine eigene Methode, die Sie sowohl über den Button-Click-Ereignishandler als auch an anderen Stellen im Code aufrufen können, für die die Funktionalität erforderlich ist.
Es ist nur eine Methode in Ihrem Formular. Sie können sie genauso wie jede andere Methode aufrufen. Sie müssen nur ein EventArgs-Objekt erstellen, um es zu übergeben (und das Handle der Schaltfläche als sender
übergeben).
Rufen Sie einfach an:
btnTest_Click(null, null);
Stellen Sie nur sicher, dass Sie nicht versuchen, diese Parameter in der Funktion zu verwenden.
Innerhalb des ersten Schaltflächenereignisses wird das zweite Schaltflächenereignis (Bildschaltfläche) aufgerufen:
imagebutton_Click((ImageButton)this.divXXX.FindControl("imagbutton"), EventArgs.Empty);
sie können den Schaltflächenstatus verwenden, z. B. das BefehlsArgument der Bildschaltfläche, wenn Sie etwas darin speichern.
btnSubmit_Click(btnSubmit,EventArgs.Empty);
Sie müssen den Parameter sender
und e
übergeben, um den Button-Ereignishandler in der CS-Datei aufzurufen
btnTest_Click(sender,e);
btnTest_Click (neues Objekt (), EventArgs.Empty)
Sie können den btnTest_Click wie jede andere Funktion aufrufen.
Die grundlegendste Form wäre folgende:
btnTest_Click(this, null);