views:

32

answers:

2

Hello, I have the following code:

btnTest.Click += (sender,e) => SomeAction()

why does this code works in WinForms and not in asp.net. In asp.net I had to do the following:

btnTest.Click += new EventHandler(SomeAction);

target framework in both cases is .net 4.0

A: 

It works fine is ASP.NET 4.0 for me:

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()
   {
   }
}
Russell McClure
+1  A: 

Is it possible you are trying to call

btnTest.Click += (sender,e) => SomeAction() 

from inside the Page_Load method or another event handler? In that case the parameters "sender" and "e" are already declared and can be causing a conflict.

Change the definition to:

btnTest.Click += (s,ea) => SomeAction();

You'll probably want to forward the arguments to your function though:

btnTest.Click += (s,ea) => SomeAction(s, ea);
Geoff
Or move it to a different function as @Russell shows
Geoff
yes, it's declared in Page_Load method
niao
Your Page_Load already defines sender and e, so you can't use those as parameters in your event delegate declaration.
Geoff