C#:调用按钮事件处理程序方法而不实际单击按钮
我的aspx文件中有一个名为btnTest的按钮。 .cs文件有一个函数,单击该按钮时会调用该函数。
btnTest_Click(object sender, EventArgs e)
如何从我的代码中调用此函数(即没有实际单击按钮)?
btnTest_Click(null, null);
前提是该方法不使用这些参数中的任何一个(这是非常常见的。)
说实话虽然这很蠢。 如果您需要调用代码,则应遵循以下约定:
protected void btnTest_Click(object sender, EventArgs e) { SomeSub(); } protected void SomeOtherFunctionThatNeedsToCallTheCode() { SomeSub(); } protected void SomeSub() { // ... }
使用
btnTest_Click( this, new EventArgs() );
以上所有方法都不好,因为您可能会更改事件函数名称。 最简单的是:
btnTest.PerfromClick();
您可以使用reflection来调用OnClick
方法,该方法将触发click事件处理程序。
我觉得发布这个很脏但是有效……
MethodInfo clickMethodInfo = typeof(Button).GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); clickMethodInfo.Invoke(buttonToInvoke, new object[] { EventArgs.Empty });
如果该方法未使用sender
或e
您可以致电:
btnTest_Click(null, null);
您可能应该考虑的是将该方法中的代码提取到自己的方法中,您可以从按钮单击事件处理程序以及代码中需要该function的任何其他位置调用该方法。
它只是表单上的一种方法,您可以像任何其他方法一样调用它。 您只需要创建一个EventArgs对象传递给它,(并将按钮的句柄作为sender
传递给它)
只需致电:
btnTest_Click(null, null);
只要确保你没有尝试在函数中使用这些参数中的任何一个。
在第一个按钮事件内部调用第二个按钮(imagebutton)事件:
imagebutton_Click((ImageButton)this.divXXX.FindControl("imagbutton"), EventArgs.Empty);
你可以使用按钮状态,如imagebutton的commandArgument,如果你保存一些东西。
btnTest_Click(new object(),EventArgs.Empty)
你可以像任何其他函数一样调用btnTest_Click。
最基本的forms是这样的:
btnTest_Click(this, null);
btnSubmit_Click(btnSubmit,EventArgs.Empty);
btnTest.Click +=new EventHandler(btnTest_Click)
- smtpexception发送邮件失败?
- 在ASP.NET中加载嵌套的UserControl
- 检测AutoCompleteExtender选择事件
- 将新行数据添加到gridview asp.net c#
- WCF流式文件传输在.NET 4上
- 学习WPF会提高我的ASP.NET技能吗?
- System.Security.SecurityException:请求类型为’System.Security.Permissions.EnvironmentPermission,mscorlib’的权限失败
- SQL Server:使用原始exception编号的Rethrowexception
- 如何使用Microsoft.Web.Administration.dll获取该页面正在运行的站点信息?