将Click事件添加到C#中动态生成的按钮

时间:2015-12-23 16:15:15

标签: c# visual-studio

所以我现在正试图让一个简单的购物车在网站上工作。基本上,当购物车在购物车页面上显示商品时,会在面板上填充与每个商品相关的图片,标签和按钮。

我想要做的是为每个创建的按钮分配一个click事件,该按钮调用一般方法从列表中删除该项。这是从项目的arraylist中删除项目的代码:

public void Remove(CartItem item)
{ 
    ArrayList remove = (ArrayList)Session["ShoppingBasket"];
    remove.Remove(item);
}

这是我正在尝试为每个生成的按钮编码的事件处理程序:

btnRemove.Click += new EventHandler(Remove(item));

由于某种原因,会出现一条错误消息,说明在上面的代码行中需要一个方法名称,我无法看到我出错的地方。我对使用EventHandler对象并不太熟悉,因此非常感谢那里的任何指导。

2 个答案:

答案 0 :(得分:3)

EventHandler应匹配Event的签名。您不能只将任何方法作为EventHandler传递。你需要一个与事件签名相匹配的合适空格。

您可以尝试使用lambda表达式:

btnRemove.Click += (_sender, _args) => Remove(item);

您可以使用单独的方法但由于需要将item传递给函数Remove,因此您需要使用lambda表达式来访问item在上下文中。

答案 1 :(得分:0)

试试这个。

btnRemove.Click + =(e,s)=>除去(项目)