【发布时间】:2010-10-26 02:51:35
【问题描述】:
我有以下代码:
btnTest.Click += (sender,e) => SomeAction()
为什么这段代码在 WinForms 中有效,而在 asp.net 中无效。在 asp.net 中,我必须执行以下操作:
btnTest.Click += new EventHandler(SomeAction);
这两种情况下的目标框架都是 .net 4.0
【问题讨论】:
我有以下代码:
btnTest.Click += (sender,e) => SomeAction()
为什么这段代码在 WinForms 中有效,而在 asp.net 中无效。在 asp.net 中,我必须执行以下操作:
btnTest.Click += new EventHandler(SomeAction);
这两种情况下的目标框架都是 .net 4.0
【问题讨论】:
您是否可能正在尝试调用
btnTest.Click += (sender,e) => SomeAction()
来自 Page_Load 方法或其他事件处理程序?在这种情况下,参数“sender”和“e”已经声明,可能会导致冲突。
将定义改为:
btnTest.Click += (s,ea) => SomeAction();
您可能希望将参数转发给您的函数:
btnTest.Click += (s,ea) => SomeAction(s, ea);
【讨论】:
ASP.NET 4.0 对我来说很好用:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
private void SomeFunc()
{
Button1.Click += (sender, e) => SomeAction();
}
private void SomeAction()
{
}
}
【讨论】: