分享一个C#自定义事件的实际应用
在C#.NET的开发中,事件是经常接触到的概念,比如为按钮添加点击事件,并写入点击按钮触发事件要运行的代码。不管是ASP.NET还是WinForm等各种形式的应用程序,最经常是为系统生成的事件写具体代码。如果要自定义事件呢?有的朋友对于自定义事件感觉比较难理解。最近在开发HoverTreeTop项目时,有一个自定义事件的实例,分享一下。HoverTreeTop是一个ASP.NET项目,有一个产品展示的功能,那么就需为产品添加图片展示(http://hovertree.com/top/htpro/5dbcb599663b3397.htm),如果是经常网购的朋友就很清楚的。HoverTreeTop项目中添加图片是作为一个独立的用户控件(UCPictureAdd.ascx)实现的,这样可提高代码复用性。产品和图片分别有各自的数据表(分别为HoverTreeTop_product和HoverTreeTop_picture),它们之间的关系也有一个表(HoverTreeTop_ProductPic)。
操作的流程为:先添加产品信息,再进入产品修改页(ProductAlter.aspx),在修改页中放置图片添加用户控件,使用用户控件成功添加图片后,再添加产品和图片关系。
那么在后台成功添加图片后,就需要为图片和产品指定关系。这里就用到了C#的自定事件。在添加上传图片的用户控件中,自定义委托和自定义事件,当成功添加图片后,就触发事件。而在引用用户控件的产品修改页中,则监听事件,指定事件触发所执行的方法。
请看UCPictureAdd.ascx.cs代码:
public delegate void OperateSuccessHanlder(string fileName); //创建委托 public event OperateSuccessHanlder OperateSuccess; void OnOperateSuccess(string fileName)
{
OperateSuccess?.Invoke(fileName);
}
protected void button_hewenqi_Click(object sender, EventArgs e)
{
OnOperateSuccess("hovertree");//这里传入值需换为实际值
}
ProductAlter.aspx.cs的代码:
protected void Page_Load(object sender, EventArgs e)
{ //为控件的事件添加监听方法
picAdd1.OperateSuccess += PicAdd1_OperateSuccess;
}
private void PicAdd1_OperateSuccess(string fileName)
{
//添加产品和图片关系
}
所以自定义事件的步骤简单来说就是,定义委托,定义事件,触发事件,监听事件。
涉及到的源码:
http://hovertree.com/top/code/hovertreepanel/htpanel/hcontrol/ucpictureadd.ascx.htm
http://hovertree.com/top/code/hovertreepanel/htpanel/hcontrol/ucpictureadd.ascx.cs.htm
http://hovertree.com/top/code/hovertreepanel/htpanel/hproduct/productalter.aspx.htm
http://hovertree.com/top/code/hovertreepanel/htpanel/hproduct/productalter.aspx.cs.htm
更详细代码可以下载项目源码:
http://hovertree.com/h/bjaf/hv6cqe5n.htm
转自:http://hovertree.com/h/bjag/cm8k4ja1.htm
推荐:
http://www.cnblogs.com/sosoft/p/kaifajishu.html
分享一个C#自定义事件的实际应用的更多相关文章
- 分享一个圆角自定义的漂亮AlertDialog
\res\drawable-hdpi\bg_title_custom_dialog.xml: <?xml version="1.0" encoding="utf-8 ...
- MUI APP关于页面之间的传值,plusready和自定义事件
最近在用MUI开发这个APP,发现有时候这个plusready不起作用,表现在,这个页面如果重复打开,这个plusready就进不去,然后上一个页面传过来的值,就没法接收了.这个经过MUI官方确认,是 ...
- Javascript之自定义事件
Javascript自定义事件,其本质就是观察者模式(又称订阅/发布模式),它的好处就是将绑定事件和触发事件相互隔离开,并且可以动态的添加.删除事件. 下面通过实例,一步一步构建一个具体的Javasc ...
- javascript中自定义事件
自定义事件:用户可以指定事件类型,这个类型实际上就是一个字符串,然后为这个类型的事件指定事件处理函数,可以注册多个事件处理函数(用数组管理),调用时,从多个事件处理函数中找到再调用. function ...
- js的自定义事件
js中的事件是js的一大技术点,说白了就是操作dom树的唯一途径. 关于事件无非两种绑定方式: document.getElementById('xxx').onclick = function(){ ...
- Vue中调用另一个组件中自定义事件
之前在一个场景中,遇到组件需要调用父组件中的方法tableInit(),字组件调用父组件常用的有三种方法,具体参考:https://www.cnblogs.com/jin-zhe/p/9523782. ...
- Javascript事件模型系列(四)我所理解的javascript自定义事件
被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...
- 理解的javascript自定义事件
理解的javascript自定义事件 被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情, ...
- 由自定义事件到vue数据响应
前言 除了大家经常提到的自定义事件之外,浏览器本身也支持我们自定义事件,我们常说的自定义事件一般用于项目中的一些通知机制.最近正好看到了这部分,就一起看了下自定义事件不同的实现,以及vue数据响应的基 ...
随机推荐
- leetcode 之 Unique Paths
Unique Paths A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagra ...
- android该系统的应用API选择演示版本
转载请注明出处[http://blog.csdn.net/y150481863/article/details/41280045] 首先我们在开发一个应用之前,特别是一个android应用.首先要考虑 ...
- ABP日志管理
ABP日志管理 基于DDD的现代ASP.NET开发框架--ABP系列之8.ABP日志管理 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP ...
- 《JAVA与模式》之单例模式 [转]
在阎宏博士的<JAVA与模式>一书中开头是这样描述单例模式的: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的 ...
- elasticsearch的rest搜索--- 安装
目录: 一.针对这次装B 的解释 二.下载,安装插件elasticsearch-1.7.0 三.索引的mapping 四. 查询 五.对于相关度的大牛的文档 二.安装 1. 安装head管理插 ...
- DM8168 layout
我们学到了以前的系统板的教训,新的版本号DM8168烤... 一级:电源.DM8168.DDR3.FPGA.CPLD.Nandflash.USB.以太网络.SATA.JTAG等待. 的地面电源部充分. ...
- 华为-on练习--身高找到最好的二人
称号: 离5个人选择2个人作为礼工具.中的每个个体的身高的范围160-190,要求2个人高差值至少(假设差异值一样,他们中最高的选择).输出的两个人的身高升序. Smple input:161 189 ...
- 访问Ice-Pick Lodge:假设公众筹款网站Kickstarter在成功
Xsolla非常高兴採訪了来自莫斯科的工作室 Ice-Pick Lodge的Golubeva.数天前,该公司已成功在Kickstarter上募集资金,创造出最知名的游戏"Pathologic ...
- .net EF 事物 订单流水号的生成 (一)
首先需要 添加 System.Transactions 程序集 数据表: create table SalesOrder ( ID ,) primary key not null, OrderNo ) ...
- Delta3D 2.8版本号 预习
http://blog.csdn.net/zhuyingqingfen/article/details/38581453 看到官网今天的更新.发现即将公布的delta3d 2.8 版本号 做了非常大的 ...