C# 使用匿名函数解决EventHandler参数传递的难题
- 作者: 模棱22124902
- 来源: 51数据库
- 2021-08-04
首先,动态生成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 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#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0
