zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C#使用匿名函数解决EventHandler参数传递的难题

c# 使用 解决 函数 难题 匿名 参数传递
2023-06-13 09:14:09 时间
首先,动态生成PictureBox,很简单,
PictureBoxbox=newPictureBox();
box.ImageLocation=imageRoad;
其次,给PictureBox添加右键菜单,也不难,
ContextMenumenu=newContextMenu();
box.ContextMenu=menu;
然后,要给右键菜单增加“删除”项,并实现删除图片事件。这个,比较麻烦。
MenuItemitem=newMenuItem("删除");
menu.MenuItems.Add(item,newEventHandler(item_Click));
voiditem_Click(objectsender,EventArgse)
{
//增加删除图片的功能
//1、获取图片对象
//2、删除图片
}
在item_Click方法中,由于无法获得图片对象的值,所以无法进行删除操作。除非,在item_Click方法中,能够将PictureBox对象作为参数传递进来。这个,没想出来怎么实现。
尝试使用匿名方法,
menu.MenuItems.Add(item,delegate(Objecto,EventHandlere){box.ImageLocation="";});
由于匿名方法是在方法体内,因此,可以将box作为参数传递进来。
总结:使用匿名方法实现事件参数的传递,因为匿名方法可以使用外部参数。
关键词:事件、委托、匿名方法
语言平台:C#2.0及以上