您的位置:首页 > 编程语言 > C#

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及以上

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# object menu 语言 平台
相关文章推荐