C#中使用匿名函数解决EventHandler参数传递的难题
2009-05-05 01:41
579 查看
C#动态生成PictureBox并绑定右键菜单,实现删除图片
首先,动态生成PictureBox,很简单,
PictureBox box = new PictureBox() ;
box.ImageLocation = imageRoad ;
其次,给PictureBox添加右键菜单,也不难,
ContextMenu menu = new ContextMenu();
box.ContextMenu = menu ;
然后,要给右键菜单增加“删除”项,并实现删除图片事件。这个,比较麻烦。
MenuItem item = new MenuItem("删除") ;
menu.MenuItems.Add( item , new EventHandler( item_Click )) ;
void item_Click(object sender, EventArgs e)
{
// 增加删除图片的功能
// 1、获取图片对象
// 2、删除图片
}
在item_Click方法中,由于无法获得图片对象的值,所以无法进行删除操作。除非,在item_Click方法中,能够将PictureBox对象作为参数传递进来。这个,没想出来怎么实现。
尝试使用匿名方法,
menu.MenuItems.Add( item, delegate(Object o,EventHandler e){ box.ImageLocation = "" ; });
由于匿名方法是在方法体内,因此,可以将box作为参数传递进来。
总结:使用匿名方法实现事件参数的传递,因为匿名方法可以使用外部参数。
关键词:事件、委托、匿名方法
语言平台:C# 2.0及以上
首先,动态生成PictureBox,很简单,
PictureBox box = new PictureBox() ;
box.ImageLocation = imageRoad ;
其次,给PictureBox添加右键菜单,也不难,
ContextMenu menu = new ContextMenu();
box.ContextMenu = menu ;
然后,要给右键菜单增加“删除”项,并实现删除图片事件。这个,比较麻烦。
MenuItem item = new MenuItem("删除") ;
menu.MenuItems.Add( item , new EventHandler( item_Click )) ;
void item_Click(object sender, EventArgs e)
{
// 增加删除图片的功能
// 1、获取图片对象
// 2、删除图片
}
在item_Click方法中,由于无法获得图片对象的值,所以无法进行删除操作。除非,在item_Click方法中,能够将PictureBox对象作为参数传递进来。这个,没想出来怎么实现。
尝试使用匿名方法,
menu.MenuItems.Add( item, delegate(Object o,EventHandler e){ box.ImageLocation = "" ; });
由于匿名方法是在方法体内,因此,可以将box作为参数传递进来。
总结:使用匿名方法实现事件参数的传递,因为匿名方法可以使用外部参数。
关键词:事件、委托、匿名方法
语言平台:C# 2.0及以上
相关文章推荐
- C# 使用匿名函数解决EventHandler参数传递的难题
- C#中使用匿名函数解决EventHandler参数传递的难题
- C#解决EventHandler参数无法传递问题
- C#解决EventHandler参数无法传递问题
- C# 使用Tuple传递多个参数
- BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法。
- BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
- C#Trick&Tip: 使用 ref 与 out 传递参数的区别
- JSP使用URL编码传递中文参数问题的解决
- c#参数传递使用中的一个坑,值传递与引用传递
- Code19 使用C#实现如何在运行时传递参数给水晶报表
- iOS UIButton点击事件传递多个参数的解决办法 -----使用关联函数
- BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法。
- setinterval 使用闭包解决参数不能传递的问题
- javascript BASE64-客户端(js)加码-服务器端(c#)解码,URL传递“汉字参数”解决方法
- C# 线程中使用Timer,并向其触发的事件(函数)中传递参数
- 黑马程序员 C#参数传递方式及使用情境
- js replace 全局替换 以表单的方式提交参数 判断是否为ie浏览器 将jquery.qqFace.js表情转换成微信的字符码 手机端省市区联动 新字体引用本地运行可以获得,放到服务器上报404 C#提取html中的汉字 MVC几种找不到资源的解决方式 使用Windows服务定时去执行一个方法的三种方式
- C#操作sqlite数据库使用SQLiteParameter传递参数
- C# ASP.net 解决easyui treegrid传递参数后台无法获取的问题