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

2016-02-19 09:02 116 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享C# 使用匿名函数解决EventHandler参数传递的难题的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - 编程语言 】

首先,动态生成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及以上

来源:http://www.tulaoshi.com/n/20160219/1589252.html

延伸阅读
标签: 办公软件
    某天,有一同事拿着一份成绩表来找我寻求帮助。原来这是一份Excel格式的全市对口高考成绩表,整个工作表中除了处于A列的准考证号字段外,其他字段就是各科的考试成绩以及总分成绩。现在的要求是从这份工作表中将本校学生的成绩筛选出来。但现在的问题是当初排准考证号的时候是各个学校的学生间隔排列的,只知道本校考生的...
在写程序的时候,往往会出现为一个类型提供不同场景的构造函数,可能大多构造函数比较相似,而C#中又不允许缺省参数,因此构造函数的编写无疑是一个重复工作。但是使用Copy和Paste来完成构造函数的编写,有时候很难达到统一,尤其是当成员发生变化的时候。因此比较常见的替换方法就是为构造函数提供一个统一的成员函数来完成初始化工作。 ...
一、 简介 所有的方法都使用一个来自于相同集合的元素的子集。在C# 2.0中,可选元素集将会继续增长。从历史上看-除了C++内联方法之外-方法都要求有一个名字、一个返回类型和一个方法体。而且可选择地,方法可以使用存取修饰符和一个参数列表。在C# 2.0中,方法名已经从必需的变成了可选的。 C# 2.0(一般就代表.NET)引入了匿名方...
当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道.这些往往会使人受尽折磨.所以如果你想深入C/C++编程,你必须静下心来,好好苦一番. 现在我们将讨论C/C++里我认为哪一本书都没有完全说清楚,也是涉及概念细节最多,语言中最难的技术之一的动态内存的传递.并且在软件开发中很多专业人员并不能写出相关的合格的代码. ...
在c++中,可以为函数提供默认参数,这样,在调用函数的时候,如果不提供参数,编译器将为函数提供参数的默认值。下面从汇编看其原理。 下面是c++源码: 代码如下: int add(int a = 1, int b = 2) {//参数a b有默认值     return a + b; } int main() {    int c= add();//不提供参数 } 下面是mian函数里面的汇...

经验教程

695

收藏

25
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部