C# 在C中单击按钮“附加到具有动态参数的方法”#

C# 在C中单击按钮“附加到具有动态参数的方法”#,c#,asp.net,webforms,C#,Asp.net,Webforms,在C#类中,我有类型为void的方法Method1,它有两个参数:inta和intb。 在Method2中,我动态创建了一些链接按钮,我想将其与Method1关联,但是: x[i].OnClickClient += new EventHandler(Method1(1,2)); 其中x[i]是索引i链接按钮,呈现错误:“预期的方法名称”。 这个的正确语法是什么?OnClickClient是否为此工作? 我见过一些例子,其中包括一种方法,如: protected void Button1_Cli

在C#类中,我有类型为void的方法Method1,它有两个参数:inta和intb。 在Method2中,我动态创建了一些链接按钮,我想将其与Method1关联,但是:

x[i].OnClickClient += new EventHandler(Method1(1,2));
其中x[i]是索引i链接按钮,呈现错误:“预期的方法名称”。 这个的正确语法是什么?OnClickClient是否为此工作? 我见过一些例子,其中包括一种方法,如:

protected void Button1_Click(object sender, EventArgs e)
{

}
但是我不想为每个按钮创建一个单独的方法,因为我可能有100个按钮,所以对于组中的任何按钮,单击应该与Method1动态关联,并且只有参数不同(它们也将动态递增)。
谢谢。

正确的语法是:

x[i].OnClickClient += new EventHandler(Button_Click);

protected void Button_Click(object sender, EventArgs e)
{
    Button button = (Button)sender;  // Which button was clicked;

    // Now you can do stuff with the button that was clicked
}

也可以使用lambda表达式:

x[i].OnClickClient += (sender, e) => Method(1,2);

使用服务器单击,无法使用客户端调用服务器方法。根据seKramb,我的建议/自动完成列表中没有OnServerClick。Unf,我得到:无法将lambda表达式转换为string类型,因为它不是委托类型;运算符+=不能应用于字符串和lambda表达式类型的操作数。是否应声明发件人和电子邮件地址?谢谢单击方法如何链接到方法1(a,b)?语法很糟糕。谢谢@您可以从
按钮\u Click()
方法内部调用
方法1(a,b)
。您从哪里获得
a
b
的值?我不明白它们与按钮的关系。棘手的部分是a,这是当前的按钮索引(按钮在一个按钮数组中,因此我需要将I从x[I]传递到ButtonClick,然后根据I调用Method1)。现在的主要问题是根本没有调用Button_Click。显然,这是因为Button Click会导致页面加载,从而重新创建按钮及其属性(我在load中有一个generate buttons方法)。是否有一种方法可以在不调用页面加载的情况下将事件附加到按钮单击?a是按钮的索引,因此等于x[i].Text中的i,而b是类常量。大概x[i].文本应该可以通过button.Text访问(我无法验证,因为此时未触发按钮的单击)。