C#笔记——事件
2012-08-02 00:34
120 查看
1、前提:委托(delegate)
委托定义的方法:
delegate 类型(int/double/bool) Name/委托名(其实是个类)(类型 参数)
委托有一个特性,就是将所有的委托相加之后,即串联起来时委托是挨个执行的,表示对象能够同时监听到所有串接的委托。即在委托之间可以用+、-符号,用-号的时候注意,若-的是最后一个加上去的委托,那么减之后这个委托就相当于木有了,但是若减的其他的委托,结果不会改变~
2、事件是如何触发的?
1)使用重载运算符+= 注册要激发的控件的事件 2)编写事件处理函数
eg:按Btn1的时候激发Btn2的单击事件:
3、事件的标准写法
public event 委托类型 事件名字 (参数列表)
{
add{+=}
remove{+=}
}
add与remove最终编译生成两个方法即与属性set和get的本质相同,用+=添加监听时调用add方法
4、C#中使用事件需要的步骤
1)创建一个委托
2)将创建的委托与特定事件关联(.Net类库中的很多事件都是已经定制好的,所以他们也有相应的一个委托,在编写关联事件处理程序——有时间发生我们要执行方法的时候,方法应该与这个委托有相同的签名即返回类型和参数类型)
3)编写事件处理程序
4)利用编写的事件处理程序生成一个委托实例
5)把这个委托实例添加到产生事件对象的事件列表中,这个过程又叫订阅事件。
5、C#中事件产生和实现的流程
1)定义A为产生事件的实例,a为A产生的一个事件
2)定义B为接收事件的实例,b为处理事件的方法
3)A由于用户或者系统产生一个a时间(例如点击一个Button,产生一个Click事件)
4)A通过事件列表中的委托对象将这个事件通知给B
5)B接到一个事件通知(实际是B.b利用委托来实现事件的接收)
6)调用B.b方法完成事件处理
6、event与delegate区别
delegate:事件是由委托来实现的,委托是一个类型,就是指向一个方法用的,提供函数指针的功能。委托支持组合,把一个委托和另一个委托组合起来,就都进了监听,调用的时候是一个个的挨着调用。将委托指向函数的时候,得看委托的签名(返回类型和参数类型)再定义函数的签名,应因为委托只能引用与其签名匹配的方法,委托equal to 一个类型安全的函数指针或是一个回调。(vs2010可以自动生成)
event:事件是一个类似于属性或字段的家伙;事件的实现就是一个private委托和一个add and remove。(private的原因:如果使用public,若将监听 = null或是伪造事件很容易,容易崩溃~但是将委托改为private之后外部无法调用,这样可以使用事件触发)
委托定义的方法:
delegate 类型(int/double/bool) Name/委托名(其实是个类)(类型 参数)
委托有一个特性,就是将所有的委托相加之后,即串联起来时委托是挨个执行的,表示对象能够同时监听到所有串接的委托。即在委托之间可以用+、-符号,用-号的时候注意,若-的是最后一个加上去的委托,那么减之后这个委托就相当于木有了,但是若减的其他的委托,结果不会改变~
2、事件是如何触发的?
1)使用重载运算符+= 注册要激发的控件的事件 2)编写事件处理函数
eg:按Btn1的时候激发Btn2的单击事件:
Btn.Click += new EventHandler(Btn2_Click); private void Btn2_Click(object sender , EventArgs e) { MessageBox.Show("hello"); }
3、事件的标准写法
public event 委托类型 事件名字 (参数列表)
{
add{+=}
remove{+=}
}
add与remove最终编译生成两个方法即与属性set和get的本质相同,用+=添加监听时调用add方法
4、C#中使用事件需要的步骤
1)创建一个委托
2)将创建的委托与特定事件关联(.Net类库中的很多事件都是已经定制好的,所以他们也有相应的一个委托,在编写关联事件处理程序——有时间发生我们要执行方法的时候,方法应该与这个委托有相同的签名即返回类型和参数类型)
3)编写事件处理程序
4)利用编写的事件处理程序生成一个委托实例
5)把这个委托实例添加到产生事件对象的事件列表中,这个过程又叫订阅事件。
5、C#中事件产生和实现的流程
1)定义A为产生事件的实例,a为A产生的一个事件
2)定义B为接收事件的实例,b为处理事件的方法
3)A由于用户或者系统产生一个a时间(例如点击一个Button,产生一个Click事件)
4)A通过事件列表中的委托对象将这个事件通知给B
5)B接到一个事件通知(实际是B.b利用委托来实现事件的接收)
6)调用B.b方法完成事件处理
6、event与delegate区别
delegate:事件是由委托来实现的,委托是一个类型,就是指向一个方法用的,提供函数指针的功能。委托支持组合,把一个委托和另一个委托组合起来,就都进了监听,调用的时候是一个个的挨着调用。将委托指向函数的时候,得看委托的签名(返回类型和参数类型)再定义函数的签名,应因为委托只能引用与其签名匹配的方法,委托equal to 一个类型安全的函数指针或是一个回调。(vs2010可以自动生成)
event:事件是一个类似于属性或字段的家伙;事件的实现就是一个private委托和一个add and remove。(private的原因:如果使用public,若将监听 = null或是伪造事件很容易,容易崩溃~但是将委托改为private之后外部无法调用,这样可以使用事件触发)
相关文章推荐
- C#笔记 委托 事件 匿名方法 Action
- CLR_Via_C#学习笔记之事件
- c# 学习笔记之九 事件(event)的使用,一个简单例子揭示机理
- C#与.NET4 高级程序设计-----委托、事件 学习笔记
- C#事件 委托 学习笔记
- Modern C# 系列课程笔记 第11节 深入委托和事件
- C#学习笔记之三:C#接口与事件委托
- C#学习笔记之——事件(Event)
- 作个笔记 C#检查事件是否已经被绑定的方法
- [读书笔记]C#学习笔记二: 委托和事件的用法及不同
- 【C#笔记】控件数组与事件
- C# 学习笔记 combobox 的keypass事件中防止下拉框回弹
- CLR_Via_C#学习笔记之事件
- C#中的委托、事件学习笔记
- C# 委托和事件 笔记
- 《C#高级编程》学习笔记------C#中的委托和事件(续)
- C#笔记 委托与事件
- [学习笔记]c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
- [C#]C#学习笔记-委托,事件
- C#学习笔记——常量、字段以及事件