C#:调用按钮事件处理程序方法而不实际单击按钮

时间:2010-03-05 22:39:19

标签: c# asp.net button event-handling

我的aspx文件中有一个名为btnTest的按钮。 .cs文件有一个在单击按钮时调用的函数。

btnTest_Click(object sender, EventArgs e)

如何在我的代码中调用此函数(即没有实际点击按钮)?

13 个答案:

答案 0 :(得分:29)

btnTest_Click(null, null);

如果该方法没有使用这些参数中的任何一个(这是非常常见的。)

老实说虽然这很蠢。如果您需要调用代码,则应遵循以下约定:

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

protected void SomeOtherFunctionThatNeedsToCallTheCode()
{
   SomeSub();
}

protected void SomeSub()
{
   // ...
}

答案 1 :(得分:18)

使用

btnTest_Click( this, new EventArgs() );

答案 2 :(得分:6)

以上所有方法都不好,因为您可能会更改事件函数名称。最简单的是:

btnTest.PerfromClick();

答案 3 :(得分:5)

您可以使用反射来调用OnClick方法,该方法将触发点击事件处理程序。

我觉得发布这个很脏但是有效......

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

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

答案 4 :(得分:4)

如果该方法未使用sendere可以致电:

btnTest_Click(null, null);

您可能应该考虑的是将该方法中的代码提取到自己的方法中,您可以从按钮单击事件处理程序以及代码中需要该功能的任何其他位置调用该方法。

答案 5 :(得分:2)

这只是表单上的一种方法,你可以像任何其他方法一样调用它。您只需要创建一个EventArgs对象来传递给它,(并将按钮的句柄传递给sender

答案 6 :(得分:2)

只需致电:

btnTest_Click(null, null);

请确保您没有尝试在函数中使用这些参数中的任何一个。

答案 7 :(得分:1)

第一个按钮事件内部调用第二个按钮(imagebutton)事件:

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

如果你保存了一些东西,你可以使用按钮状态,例如imagebutton的commandArgument。

答案 8 :(得分:0)

btnTest_Click(new object(),EventArgs.Empty)

答案 9 :(得分:0)

你可以像任何其他函数一样调用btnTest_Click。

最基本的形式是:

btnTest_Click(this, null);

答案 10 :(得分:0)

btnSubmit_Click(btnSubmit,EventArgs.Empty);

答案 11 :(得分:0)

您必须传递参数sendere才能调用.cs文件中的按钮事件处理程序

btnTest_Click(sender,e);

答案 12 :(得分:-1)

btnTest.Click +=new EventHandler(btnTest_Click)