C# 事件详解
1.事件的本质是什么
答:事件是委托的包装器,就像属性是字段的包装器一样
2.为什么有了委托还有有事件
委托可以被访问就可以被执行,事件则只能在类的内部执行
3.事件要怎么声明
a.明一个委托
//委托用于事件,约定以EventHandle结束 ,参数一般要有一个事件拥有者,和一个事件参数 ,这三者是同级的关系,所以三个类访问级别要一致//为什么说三者呢,因为委托虽然写法比较怪,但也是一个类 public delegate void DelegateNameEventHandle(IHaveEvent obj,EventArgs e);
b.声明委托的参数类
//事件参数类要记得承继EventArgs这个系统的基类
public class DelegateNameEvenArgs:EventArgs
{
public int p1 { get; set; }
}
c.声明拥有些事件的类
public class IHaveEvent
{
//简化的声明
public event DelegateNameEventHandle MySimpleEvent;
//完整的声明
private DelegateNameEventHandle delegateNameEventHandle;
public event DelegateNameEventHandle MyFullEvent
{
add {
delegateNameEventHandle += value;
}
remove {
delegateNameEventHandle -= value;
}
}
}
4. .net 框架已经有一个 默认的 事件委托了 一般直接用就可以 不必自己声明
//
// 摘要:
// 表示将用于处理不具有事件数据的事件的方法。
//
// 参数:
// sender:
// 事件源。
//
// e:
// 不包含事件数据的对象。
[ComVisible(true)]
public delegate void EventHandler(object sender, EventArgs e);
5.既然事件只能由拥有者来执行,一般是如何操作的呢
//1 执行事件方法的访问级别不要让外部可以访问到,设成protected 此类的派生类也能访问 2 约定执行事件的方法命名on+事件名
protected void onEvnt(EventArgs e)
{
if (delegateNameEventHandle != null)
{
delegateNameEventHandle(this, e );
}
}
C# 事件详解的更多相关文章
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
- 第三天:JS事件详解-事件流
学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容: 1)基础概念 2)举例说明: 代码如上,如果用事件 ...
- JavaScript事件详解-zepto的事件实现
zepto的event 可以结合上一篇JavaScript事件详解-原生事件基础(一)综合考虑源码暂且不表,github里还有中文网站都能下到最新版的zepto.整个event模块不长,274行,我们 ...
- JAVASCRIPT事件详解-------原生事件基础....
javaScirpt事件详解-原生事件基础(一) 事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能 ...
- iOS中—触摸事件详解及使用
iOS中--触摸事件详解及使用 (一)初识 要想学好触摸事件,这第一部分的基础理论是必须要学会的,希望大家可以耐心看完. 1.基本概念: 触摸事件 是iOS事件中的一种事件类型,在iOS中按照事件划分 ...
- js中鼠标滚轮事件详解
js中鼠标滚轮事件详解 (以下内容部分内容参考了http://adomas.org/javascript-mouse-wheel/ ) 之前js 仿Photoshop鼠标滚轮控制输入框取值中已使用 ...
- JavaScript中的鼠标滚轮事件详解
JavaScript中的鼠标滚轮事件详解/*Firefox注册事件*/ ~~~Firefox: addEventListener('DOMMouseScroll', handler, false)if ...
- 【转载】C# 中的委托和事件(详解:简单易懂的讲解)
本文转载自http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html C# 中的委托和事件(详解) C# 中的委托和事件 委托和事件在 ...
- js keyup、keypress和keydown事件 详解
js keyup.keypress和keydown事件 详解 js keyup.keypress和keydown事件都是有关于键盘的事件 当一个按键被pressed 或released在每一个现代浏 ...
随机推荐
- Java-Maven项目引入UEditor图片上传组件jar包类库的5种方式
最近,硬是和百度的UEditor组件杠上了.自己的个人官网项目,很容易就搞定了,公司的项目,尼玛,各种问题.项目多了,环境复杂了,解决问题的方法也得不断调整. 项目用Maven管理jar包,用到了UE ...
- 【codeforces 758C】Unfair Poll
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【codeforces 776D】The Door Problem
[题目链接]:http://codeforces.com/contest/776/problem/D [题意] 每个门严格由两个开关控制; 按一下开关,这个开关所控制的门都会改变状态; 问你能不能使所 ...
- JQuery 多个checkbox 只选中一个
<form id="common-form"> <input name="check1" type="checkbox"/ ...
- idea-环境配置
显示行号 Settings->Editor->Appearance标签项,勾选Show line numbers 关闭导航 在idea14版本中,上面有个代码导航,show breadcr ...
- Opencv目标跟踪—CamShift算法
CamShift算法全称是"Continuously Adaptive Mean-Shift"(连续的自适应MeanShift算法),是对MeanShift算法的改进算法,可以在跟 ...
- HTTP协议中的报文格式
按照传输过程,HTTP 报文分为请求报文和响应报文.请求报文和响应报文的结构差不多,这里只对 HTTP 请求报文做一个总结.HTTP 请求报文由 请求行.请求头.请求体(请求数据).空行 四个部分组成 ...
- CSS 常用 background 设置
CSS 背景图片设置: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- 数据访问层之Repository
数据访问层之Repository 接上文 项目架构开发:数据访问层之Logger 本章我们继续IRepository开发,这个仓储与领域模式里边的仓储有区别,更像一个工具类,也就是有些园友说的“伪 ...
- ASP.NET Page执行顺序(ASP.NET生命周期)
此部分说明的生命周期只有部分: ---引用MSDN 阶段 说明 页请求 页请求发生在页生命周期开始之前.用户请求页时,ASP.NET 将确定是否需要分析和编译页(从而开始页的生命周期),或者是否可以在 ...