web-dev-qa-db-ja.com

C#:実際にボタンをクリックせずにボタンイベントハンドラーメソッドを呼び出す

AspnファイルにbtnTestというボタンがあります。 .csファイルには、ボタンがクリックされたときに呼び出される関数があります。

btnTest_Click(object sender, EventArgs e)

コード内から(つまり、実際にボタンをクリックせずに)この関数を呼び出すにはどうすればよいですか?

20
xbonez
btnTest_Click(null, null);

メソッドがこれらのパラメーターのいずれも使用していない場合(そうでないことは非常に一般的です)。

正直言って、これはむずかしいです。呼び出す必要があるコードがある場合は、次の規則に従う必要があります。

protected void btnTest_Click(object sender, EventArgs e)
{
   SomeSub();
}

protected void SomeOtherFunctionThatNeedsToCallTheCode()
{
   SomeSub();
}

protected void SomeSub()
{
   // ...
}
29
Spencer Ruport

使用する

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

イベント関数名を変更する可能性があるため、上記のすべてのメソッドは適切ではありません。最も簡単なのは:

btnTest.PerfromClick();
6
majkinetor

リフレクションを使用して、クリックイベントハンドラーを起動するOnClickメソッドを呼び出すことができます。

これを投稿すると汚い気がしますが、うまくいきます...

MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);

clickMethodInfo.Invoke(buttonToInvoke, new object[] { EventArgs.Empty });
5
ywm

メソッドがsenderまたはeのいずれも使用していない場合、couldを呼び出します。

btnTest_Click(null, null);

おそらく検討すべきことは、そのメソッド内から独自のメソッドにコードを抽出することです。このメソッドは、ボタンクリックイベントハンドラーと、機能が必要なコードの他の場所の両方から呼び出すことができます。

4
Wayne Cornish

これはフォーム上の単なるメソッドであり、他のメソッドと同様に呼び出すことができます。渡すにはEventArgsオブジェクトを作成するだけです(そしてボタンのハンドルをsenderとして渡します)

2
John Knoeller

単に呼び出す:

btnTest_Click(null, null);

関数でこれらのパラメーターのいずれかを使用しようとしていないことを確認してください。

2
Aaron

最初のボタンイベント内で2番目のbutton(imagebutton)イベントを呼び出します。

imagebutton_Click((ImageButton)this.divXXX.FindControl("imagbutton"), EventArgs.Empty);

何かを保存する場合、imagebuttonのcommandArgumentなどのボタン状態を使用できます。

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

.csファイルでボタンイベントハンドラーを呼び出すには、パラメーターsenderおよびeを渡す必要があります

btnTest_Click(sender,e);
0
user8972244

btnTest_Click(new object()、EventArgs.Empty)

0
Jonathan Allen

他の関数と同様に、btnTest_Clickを呼び出すことができます。

最も基本的な形式は次のとおりです。

btnTest_Click(this, null);
0
NebuSoft