事件委托 EventHandler
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
事件的声明
1.声明一个委托
public delegate void EventHandler(object sender, System.EventArgs e);
2.声明一个事件
public event EventHandler Changed;
3.引发一个事件
public OnChanged(EnventArgs e)
{
if ( Changed != null)
{
Changed(this,e);
}
}
4.定义事件处理程序
public MyText_OnChanged(Object sender,EventArgs e)
{
...
}
5.订阅事件(将事件处理程序添加到事件的调用列表中)
myText.Changed += EventHandler(MyText_OnChanged);
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace 事件的委托
{
class Program
{
static void Main(string[] args)
{
MyClass myClass = new MyClass(); // 6,将事件处理程序添加到事件的调用列表中(即事件布线)
myClass.Changed += new MyClass.ChangedEventHandler(myText_Changed); string str = "";
while (str != "quit")
{
Console.WriteLine("please enter a string:");
str = Console.ReadLine();
myClass.Text = str;
}
} // 对Change事件处理的程序
private static void myText_Changed(object sender, EventArgs e)
{
Console.WriteLine("text has been changed :{0}\n", ((MyClass)sender).Text);
}
}
public class MyClass
{
//1,声明空字符传myStr;
private string myStr = "";
//2,定义事件的委托
public delegate void ChangedEventHandler(object sender, EventArgs e);
//3,定义一个事件
public event ChangedEventHandler Changed;
//4,触发事件
protected virtual void OnChanged(EventArgs e)
{
if (this.Changed != null)
this.Changed(this, e);
}
// 5,Text属性
public string Text
{
get { return this.myStr; }
set
{
this.myStr = value;
// 文本改变时触发Change事件
this.OnChanged(new EventArgs());
}
}
}
}
事件委托 EventHandler的更多相关文章
- HTML 事件(三) 事件流与事件委托
本篇主要介绍HTML DOM中的事件流和事件委托. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三) 事件流与事件委托 4 ...
- 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...
- 用java语言实现事件委托模式
http://blog.csdn.net/yanshujun/article/details/6494447 用java语言实现事件委托模式 2010-04-27 00:04 2206人阅读 评论(1 ...
- C#_事件委托
CarDealer类 事件发布程序 using System; using System.Collections.Generic; using System.Linq; using System.Te ...
- 事件/委托机制(event/delegate)(Unity3D开发之十七)
猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/46539433 ...
- js中的事件委托
原文 http://itindex.net/detail/48661-js-事件 1,什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢 ...
- js动态添加事件-事件委托
作者:白狼 出处:http://www.manks.top/javascript-dynamic-event.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给 ...
- js_事件委托
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...
- 怎么理解js中的事件委托
怎么理解js中的事件委托 时间 2015-01-15 00:59:59 SegmentFault 原文 http://segmentfault.com/blog/sunchengli/119000 ...
随机推荐
- JavaScript自定义类和对象的方法
备注:JavaScript中没有类class的概念,一般把原型对象看作类 1. 工厂方法--使用new Object创建对象并添加相关属性 var Obj = new Object; ...
- HDU----(4291)A Short problem(快速矩阵幂)
A Short problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- hdu------1281 棋盘游戏(最小覆盖点)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Rudolph javascript 监听简单对象属性的变化 -- 回调函数的应用
http://www.oschina.net/code/snippet_1590754_46481 //简单对象的属性的变化监控 //通过setAttr改变属性的值 var o = { 'a':2, ...
- Java 集合系列 16 HashSet
java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...
- javaScript内置类Date,Math等
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> & ...
- Play framework logging设置
play的logger是基于Log4j,Play 2.0 uses logback as its logging engine. 一.配置 1. 在conf/application.conf中设置lo ...
- 一致性哈希算法——算法解决的核心问题是当slot数发生变化时,能够尽量少的移动数据
一致性哈希算法 摘自:http://blog.codinglabs.org/articles/consistent-hashing.html 算法简述 一致性哈希算法(Consistent Hashi ...
- 转:Linux 安装 Mysql
前段时间安装了Mysql,但是有些问题,就想把他卸载了,重新安装一个,但是没想到在Linux卸载软件是一个很痛苦的事情. 我的Mysql是用命令的方式安装的,就是上一篇文章用到的那个命令(sudo ...
- oracle Redhat64 安装
详细可以参考:http://blog.csdn.net/chenfeng898/article/details/8782679 直接执行如下yum安装命令后,如果再出错,跳到2 yum -y inst ...