我理解的事件(Event)
2006-02-12 13:32
183 查看
最近了解了委托概念,接着看了组合委托和事件。发现自己忽略了很多基础的东西。这篇文章接着上篇《我理解的委托(delegate)》 http://cowbird.cnblogs.com/archive/2006/02/10/328394.html)。供和我一样的初学者学习。
委托还有组合委托的概念,上篇文章中写到两个方法,如下:
使用方法1 this.myFunction(new 被附体的代理申明(准备附体的方法1));
使用方法2 this.myFunction(new 被附体的代理申明(准备附体的方法2));
再补充一个,使用方法3 this.myFunction(new 被附体的代理申明(准备附体的方法1)
+ new 被附体的代理申明(准备附体的方法2)
- new 被附体的代理申明(准备附体的方法2));
其实,方法3=方法1,那就是委托组合的概念。也许你现在和我一样想不出它的使用场景。
看了委托,自然遇到自定义事件(自定义事件大多使用委托的方法)。它们的区别是本来是委托一个方法,现在是委托一个事件。
代码的区别就是本来的使用方法1 this.myFunction(new 被附体的代理申明(准备附体的方法1));
而现在的使用方法是 某个类.myEvent += new 被附体的代理申明(准备附体的事件1);
另外,使用场景往往是要把自定义事件插到原来的某些事件里,所以要遇到继承类和重载方法(override),但这个不难理解。
准备一
1)主体内申明
public delegate void 关于事件的代理声明(object sender,EventArgs e);
2) 主体内申明使用代理的方法
//这里继承类
public class MyArrayList :ArrayList
{
public event 关于事件的代理声明 myEvent;
//这里重载类
public override int Add(object value)
{
int i = base.Add(value);
myEvent(this, EventArgs.Empty);
return i;
}
}
准备二
1) 主体外写准备附体的方法,上面申明的参数和返回值一致
private void 准备附体的事件1(object sender, EventArgs e)
{
}
你也可以多申明几个
private void 准备附体的事件2(object sender, EventArgs e)
{
}
准备三
myArrayList.myEvent += new 被附体的代理申明(准备附体的事件1);
到这时候,委托组合开始有意义了,应该有很多场景需要多个事件依此执行。
比如:myArrayList.myEvent += new 被附体的代理申明(准备附体的事件1 +准备附体的事件2);
事件教程参考
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csref/html/vcwlkeventstutorial.asp
委托还有组合委托的概念,上篇文章中写到两个方法,如下:
使用方法1 this.myFunction(new 被附体的代理申明(准备附体的方法1));
使用方法2 this.myFunction(new 被附体的代理申明(准备附体的方法2));
再补充一个,使用方法3 this.myFunction(new 被附体的代理申明(准备附体的方法1)
+ new 被附体的代理申明(准备附体的方法2)
- new 被附体的代理申明(准备附体的方法2));
其实,方法3=方法1,那就是委托组合的概念。也许你现在和我一样想不出它的使用场景。
看了委托,自然遇到自定义事件(自定义事件大多使用委托的方法)。它们的区别是本来是委托一个方法,现在是委托一个事件。
代码的区别就是本来的使用方法1 this.myFunction(new 被附体的代理申明(准备附体的方法1));
而现在的使用方法是 某个类.myEvent += new 被附体的代理申明(准备附体的事件1);
另外,使用场景往往是要把自定义事件插到原来的某些事件里,所以要遇到继承类和重载方法(override),但这个不难理解。
准备一
1)主体内申明
public delegate void 关于事件的代理声明(object sender,EventArgs e);
2) 主体内申明使用代理的方法
//这里继承类
public class MyArrayList :ArrayList
{
public event 关于事件的代理声明 myEvent;
//这里重载类
public override int Add(object value)
{
int i = base.Add(value);
myEvent(this, EventArgs.Empty);
return i;
}
}
准备二
1) 主体外写准备附体的方法,上面申明的参数和返回值一致
private void 准备附体的事件1(object sender, EventArgs e)
{
}
你也可以多申明几个
private void 准备附体的事件2(object sender, EventArgs e)
{
}
准备三
myArrayList.myEvent += new 被附体的代理申明(准备附体的事件1);
到这时候,委托组合开始有意义了,应该有很多场景需要多个事件依此执行。
比如:myArrayList.myEvent += new 被附体的代理申明(准备附体的事件1 +准备附体的事件2);
事件教程参考
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csref/html/vcwlkeventstutorial.asp
相关文章推荐
- 深入理解Yii2.0 (2)事件Event
- 理解事件Event在线程同步中的应用
- 首先是点击事件在不同的布局层次中传递的。 理解Down事件再哪个层次被消费(拦截),后续的Move、Up的点击事件如何传递。 其中ViewGroup中onInterceptTouchEvent方法
- 关于对事件驱动架构(event drive architecture)和事件驱动编程的理解。
- IOS中触摸事件(touch event)的分发以及响应者链(The Responder Chain)机制理解
- Android事件传递机制以及ViewGroup的onInterceptTouchEvent的理解
- Android事件分发机制完全解析,带你从源码的角度彻底理解dispatchTouchEvent,onInterceptTouchEvent
- Android TouchEvent 事件传递机制简单理解
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
- 多种SOKECT通讯模型的理解(select,WSAAsyncSelect,WSAEventSelect,Overlapped I/O 事件通知,Overlapped I/O 完成例程,IOCP)
- 复杂事件处理(Complex Event Processing)--1. 基本概念:事件,事件关系,事件处理的简单抽象理解
- 从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- (zz)从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- 理解Android中的TouchEvent事件分发机制
- 从属性(property)的角度来理解.NET中的事件(event)
- 深入理解iOS API系列(三)UiView事件传递相关函数:pointInside:withEvent:和hittest:withevent:
- Android点击事件onTouchEvent与onInterceptTouchEvent传递关系-只需要理解5点
- Android中对GridView, ListView等滚动控件的Touch事件onInterceptTouchEvent,onTouchEvent理解
- 深入理解QStateMachine与QEventLoop事件循环的联系与区别
- 从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)