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在每一个现代浏 ...
随机推荐
- 【u011】乘法难题
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 乘法难题是一种用一行的卡片来玩的单人游戏,每张卡片上有一个正整数.在游戏者从中拿出一卡片,并且得到一个 ...
- 【社交分享SDK】ShareSDK for Android 2.5.9已经公布
ShareSDK for Android 2.5.9已经公布 版本号:V2.5.9 2015-3-19 1.升级Dropbox对API接口的调用.包含授权.获取用户信息,分享三个接口 2.升级Kak ...
- 从0到1打造直播 App(直播流程介绍整理 <mark><转>)
注明:原创 2016-10-27 李智文 腾讯Bugly 概要 分享内容: 互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——……..从直播1.0秀场时代(YY),2.0游戏直播(斗 ...
- Android 仿微信朋友圈点击图片变暗
package cn.eoe.leigo.view; import android.content.Context; import android.graphics.Bitmap; import an ...
- Freemarker中的日期转换
1. 把数字类型表示的日期,转换成datetime类型,字符串输出.${item.time?number_to_datetime},默认的格式是"yyyy-MM-dd hh:mm:ss&qu ...
- 一入Python深似海--print
先给大家来个干货^~^,学习Python的一个好站点,http://learnpythonthehardway.org/book/ 经典样例 以下是几个老经典的样例喽,刚接触Python的能够敲一敲, ...
- iPad和iPhone开发的异同
niPad和iPhone开发的异同 niPad简介 n什么是iPad p一款苹果公司于2010年发布的平板电脑 p定位介于苹果的智能手机iPhone和笔记本电脑产品之间 p跟iPhone一样,搭载 ...
- MAC 安装下载好的.gz包(不像.dmg直接双击就行了)
下载之后解压,然后在terminal里敲命令吧: 复制文件:蓝色部分为你解压文件的路径,直接拖到这里就行了$ sudo mv mysql-5.1.45-osx10.6-x86_64文件路径 /usr/ ...
- 使用多target来构建大量相似App
转自 come from : http://devtang.com/blog/2013/10/17/the-tech-detail-of-ape-client-1/ 猿题库iOS客户端的技术细节(一) ...
- 学习鸟哥的Linux私房菜笔记(10)——bash2
七.命令行表达式 命令行输出--" " 将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义. 双引号不能将 \ $ ` ! 符号的特殊功能禁止 命令行输出--' ...