I don't thinks you can. The Button itself will be calling the Click event with it's own EventArgs object, and unfortunately you can't hijack that call. You can however use closures:
protected void Page_Load(object sender, EventArgs e)
{
int number = 1;
button.Click += (o, args) => Response.Write("Expression:"+number++);
number = 10;
button.Click += delegate(object o, EventArgs args) { Response.Write("Anonymous:"+number); };
}
By the way the output for this is
Expression:10Anonymous:11
Understanding why this is the output is a big step into understanding closures! Even though
number
is out of scope when Click Event is handled, it is not destroyed because both of the defined event handler's have references to the it. So it and it's value will be maintained until it is no longer needed.
I know that's not the most technical explanation of closures, but should give you an idea of what they are.