wake-up-neo.net

C #: Aufrufen einer Button-Ereignishandlermethode, ohne auf die Schaltfläche zu klicken

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)?

20
xbonez
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()
{
   // ...
}
29
Spencer Ruport

Benutzen

btnTest_Click( this, new EventArgs() );
18
JDMX

Alle oben genannten Methoden sind nicht geeignet, da Sie möglicherweise den Namen der Ereignisfunktion ändern. Das einfachste ist:

btnTest.PerfromClick();
6
majkinetor

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 });
5
ywm

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.

4
Wayne Cornish

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).

2
John Knoeller

Rufen Sie einfach an:

btnTest_Click(null, null);

Stellen Sie nur sicher, dass Sie nicht versuchen, diese Parameter in der Funktion zu verwenden.

2
Aaron

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.

1
Amy
btnSubmit_Click(btnSubmit,EventArgs.Empty);
0
Rijwan

Sie müssen den Parameter sender und e übergeben, um den Button-Ereignishandler in der CS-Datei aufzurufen

btnTest_Click(sender,e);
0
user8972244

btnTest_Click (neues Objekt (), EventArgs.Empty)

0
Jonathan Allen

Sie können den btnTest_Click wie jede andere Funktion aufrufen.

Die grundlegendste Form wäre folgende:

btnTest_Click(this, null);
0
NebuSoft