所以我现在正试图让一个简单的购物车在网站上工作。基本上,当购物车在购物车页面上显示商品时,会在面板上填充与每个商品相关的图片,标签和按钮。
我想要做的是为每个创建的按钮分配一个click事件,该按钮调用一般方法从列表中删除该项。这是从项目的arraylist中删除项目的代码:
public void Remove(CartItem item)
{
ArrayList remove = (ArrayList)Session["ShoppingBasket"];
remove.Remove(item);
}
这是我正在尝试为每个生成的按钮编码的事件处理程序:
btnRemove.Click += new EventHandler(Remove(item));
由于某种原因,会出现一条错误消息,说明在上面的代码行中需要一个方法名称,我无法看到我出错的地方。我对使用EventHandler对象并不太熟悉,因此非常感谢那里的任何指导。
答案 0 :(得分:3)
EventHandler应匹配Event的签名。您不能只将任何方法作为EventHandler传递。你需要一个与事件签名相匹配的合适空格。
您可以尝试使用lambda表达式:
btnRemove.Click += (_sender, _args) => Remove(item);
您可以使用单独的方法但由于需要将item
传递给函数Remove
,因此您需要使用lambda表达式来访问item
在上下文中。
答案 1 :(得分:0)
试试这个。
btnRemove.Click + =(e,s)=>除去(项目)