最简单的定义事件的语法
public event Action<bool> Refreash;
先介绍这个Action
这个Action是委托的快速实现方式,我用.net framework3.5是支持的,但不知道2.0的支持不。Action的委托不支持返回值,但可以支持有参数,其中bool就是一个参数。
另一种支持返回值和参数的是Func<int,bool>,这个意思是接受int参数,返回bool类型。它也可以只有返回值比如Func<bool> 就返回bool类型。
 
这个委托就是让方法也变成普通参数那样能被赋值,能被一个变量代替。
比如有个方法:
double Add(double a,double b){
return a+b;
}
//我们定义一个委托
Func<double,double,double> funcAdd;
//给这个变量赋值
funcAdd=Add;
调用
funcAdd(1.0+2.0);
就这样就是委托。
 
事件就是在委托的基础上加上个event关键字就行了。
 
事件使用的语法是+=和-=
比如这里
ucData1.Refreash += UcData1_Refreash;
UcData1_Refreash这个就是方法。
我就来说说我写的自定义事件的一个场景。
我写了两个自定义控件,一个是汇总查询条件的控件:UCFilter,一个是展示查询后的数据的控件:UCData,
 
我把他们放在Form里面,当我在UCData里点击上传按钮得时候,我得刷新这个控件。就需要去调用UCFilter得查询单据按钮。所以我不可能把更新写在UCData得上传按钮得事件里面去。
 
这个时候我就想到 了事件,我在UCData里添加事件:
public event Action<bool> Refreash;
调用事件是在上传按钮里的:
private voidb tn_upload_Click(object sender, EventArgs e){
....
上传
....
更新
if (Refreash != null)
{
Refreash(true);
}
 
 
}
这里就是事件厉害的地方了,它让我能把要执行的代码交给第三方Form窗体。Form窗体里有UCFilter的变量,我就可以在Form窗体里调用查询数据的方法了。代码就像这样:
在load事件里注册事件:
ucData1.Refreash += UcData1_Refreash;
这就使得Refreash != null
然后我就在Form里面写了事件的实现。
private void UcData1_Refreash(bool obj)
{
if (obj)
{
this.ucData1.dgv.DataSource=this.ucFilter1.LoadProcData();
}
}
this.ucFilter1.LoadProcData()就是查询控件获取数据的方法。
 
另外要说的是在使用自定义控件的时候,把控件里的控件的权限改为public要方便很多,就是这个属性


c#事件的实际应用场景的更多相关文章

  1. MMORPG大型游戏设计与开发(服务器 游戏场景 事件)

    今天第星期天,知识是永远是学习不完的,所以今天这部分算比较轻松,同时也希望大家会有一个好的周末.场景事件即场景的回调,和别的事件一样是在特定的条件下产生的,前面也介绍过场景的各种事件,今天详细的说一说 ...

  2. MMORPG大型游戏设计与开发(server 游戏场景 事件)

    游戏截图 场景事件 一个完整的对象一般都拥有事件,至于什么是事件在这里就不多解释了. 在场景中的事件在天龙/武侠世界中的事件包含场景初始化.场景定时器.场景退出.玩家进入场景.角色升级.角色死亡.角色 ...

  3. RunLoop 总结:RunLoop的应用场景(二)

    上一篇讲了使用RunLoop保证子线程的长时间存活,而不是执行完任务后就立刻销毁的应用场景.这一篇就讲述一下RunLoop如何保证NSTimer在视图滑动时,依然能正常运转. 参考资料 好的书籍都是值 ...

  4. .net中事件引起的内存泄漏分析

    系列主题:基于消息的软件架构模型演变 在Winform和Asp.net时代,事件被大量的应用在UI和后台交互的代码中.看下面的代码: private void BindEvent() { var bt ...

  5. 《C#图解教程》读书笔记之五:委托和事件

    本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.委托初窥:一个拥有方法的对象 (1)本质:持有一个或多个方法的对象:委托和典型的对象不同,执行委托实际上是执 ...

  6. 自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药

    自制Unity小游戏TankHero-2D(5)声音+爆炸+场景切换+武器弹药 我在做这样一个坦克游戏,是仿照(http://game.kid.qq.com/a/20140221/028931.htm ...

  7. C#微信公众号开发系列教程五(接收事件推送与消息排重)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  8. js关于事件

    摘要:事件在Web前端领域有很重要的地位,很多重要的知识点都与事件有关.本文旨在对常用的事件相关知识做一个汇总和记录. 在前端中,有一个很重要的概念就是事件.我对于事件的理解就是使用者对浏览器进行的一 ...

  9. 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装

    微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...

  10. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...

随机推荐

  1. C++调用Python-0:搭建环境

    1.进入到Python安装目录 2.将Python安装目录中的 include 和 libs 文件夹放在 C++项目中 3.设置 附加包含目录 和 附加库目录.附加依赖项(python310_d.li ...

  2. Linux之Docker搭建KMS服务器

    前言 在大规模软件部署和管理的过程中,激活授权管理是一项至关重要的任务.微软的KMS(Key Management Service)是一个广泛使用的技术,它使得大型组织能够在本地网络内集中管理Wind ...

  3. 实训篇-Html-表格练习1

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. lattice crosslink开发板mipi核心板csi测试dsi屏lif md6000 fpga 常见问题解答

    1. 概述 CrossLink开发板,是用Lattice的芯片CrossLink 家族系列的,LIF-MD6000-6JM80I.该芯片用于桥接视频接口功能,自带2路MIPI硬核的功能,4 LANE  ...

  5. springboot+thymeleaf+mybatis实现甘特图(代码非常详细)

    首先我们要明白:这个甘特图需要哪些动态数据. (1)需要:ID,tName,number,计划开始时间,开始时间,计划结束时间,结束时间,项目负责人,参与人,知情人ID,计划时长(可以计算得出的,不必 ...

  6. 安装两个jdk Windows系统

    安装两个jdk Windows系统 本来装的是Java 8,现在有一个新的项目要到手上,需要的环境是Java 7,想着还有别的要用,所以就装两个在电脑上 jdk的下载直接去官网就行,不知道怎么下就看这 ...

  7. 【USENIX ATC】支持异构GPU集群的超大规模模型的高效的分布式训练框架Whale

    简介: 高效大模型训练框架Whale(EPL)入选USENIX ATC 作者:张杰.贾贤艳 近日,阿里云机器学习PAI关于深度学习模型高效的分布式训练框架的论文< Whale: Efficien ...

  8. 一看即会:Serverless 应用开发的 7 个实战小技巧

    ​简介:干货满满,马住收藏! ​ Serverless 应用开发的 7 个经验心得 作者说:Serverless 架构下的应用开发,与传统架构的应用开发还是有比较大的区别点的,例如天然分布式架构会让很 ...

  9. 双11特刊|一站式在线数据管理平台DMS技术再升级,高效护航双11

    ​简介: 10万+企业共同选择的数据库服务平台 阿里云数据库已连续多年稳定支撑天猫双11,历经极端流量场景淬炼.除了保障稳定顺滑的基本盘,今年大促期间数据库通过全面云原生化,大幅提升用户体验,让技术帮 ...

  10. [FAQ] jQuery prop 与 attr 的区别

    .prop() 获取匹配的元素集中第一个元素的属性(property)值 或 设置每一个匹配元素的一个或多个属性. 当设置 selectedIndex, tagName, nodeName, node ...