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及以上
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及以上
相关文章
- mysql executereader_“c#”中“ExecuteReader”是什么意思?「建议收藏」
- 使用C#创建WebService实例
- C#中使用SQLDMO的StoredProcedure对象(存储过程)创建数据表「建议收藏」
- 聊聊 C# 中的 Composite 模式(组合模式)
- C# 使用正则表达式
- c# 对序列化类XMLSerializer 二次封装泛型化方便了一些使用的步骤
- C#判断字符串是否是有效的XML格式数据
- 使用C ORM加快MySQL访问速度(C# orm mysql)
- c#常量和字段
- webBrowser代理设置c#代码
- C#SetCursorPos简介及使用说明
- 带着问题读CLRviaC#(笔记一)CLR的执行模型
- c#进度条progressBar使用方法的小例子
- 正则表达式语法规则及在Javascript和C#中的使用方法
- C#memcached缓存使用实例代码
- c#可空类型的作用说明
- c#读写excel文件使用示例
- C#中使用ADOMD.NET查询多维数据集的实现方法
- c#分页读取GB文本文件实例
- C#使用委托的步骤浅析
- C#动态创建Access数据库及表的方法
- C#获得文件属性信息的实现方法
- C#winform编程中响应回车键的实现代码
- C#委托delegate实例解析
- C#缓存之SqlCacheDependency用法实例总结
- C#使用yield关键字让自定义集合实现foreach遍历的方法