【C#学习】21事件详解(中)深入理解事件模型的5个组成部分;使用已经准备好的事件


在这里插入图片描述

事件模型的基本理论

1.事件模型的5个组成部分

(1)事件的拥有者(event source,对象),也称:事件的source,事件的主体,事件消息的发送者

(2)事件(event,成员)

(3)事件的响应者(event subscriber,对象),是订阅了事件的对象或类,当一个事件发生时,被通知到的类或对象就是事件的响应者

(4)事件的处理器(event handler,成员),是事件响应者的方法成员,本质上是一个回调方法

(5)事件订阅,把事件处理器与事件关联在一起,本质上是一种以委托类型为基础的约定

2.事件是不会主动发生的

事件是能够让类或对象具备通知能力的成员,站在事件的拥有者的角度,事件就是用来通知别人的工具;

事件不会主动发生,它一定是被事件拥有者的某些内部逻辑所触发,才能够发生,并且发挥通知作用

  • 问题:事件是被拥有者的某些【内部逻辑】所触发,但按钮的Click事件明明是被用户的点击这个【外部逻辑】所触发的啊?

答:实际上并不是这样的,这里涉及到了Windows操作系统的常识
用户的操作通过Windows操作系统调用了按钮的内部逻辑,所以最终是按钮的内部逻辑触发了Click事件

过程:之所以说图形界面的程序比较友好,是因为它把一些底层的,复杂的逻辑全部隐藏起来了;

  • 当用鼠标去点击一个按钮,其实并不是用户自己在点击这个按钮,实际上是用户的鼠标向计算机硬件发送了一个电讯号;硬件之所以能够工作,全靠计算机的操作系统协调管理;
  • 现在计算机中运行的是Windows操作系统,当Windows侦听到由鼠标发送过来的电讯号之后,它就会查看一下它所记录的鼠标指针在屏幕上的当前位置;实际上,Windows操作系统一启动,它就一直在追踪鼠标指针在屏幕上的位置,这个也是所有图形用户界面操作系统最基本的功能之一;
  • 当Windows发现当前鼠标指针所在的位置有一个按钮,而且包含这个按钮的窗口处于激活状态时,它就会通知这个按钮:【你被用户按下了】,然后按钮的内部逻辑就开始执行,典型的内部逻辑是:按钮会快速地把自己绘制一遍,绘制成自己被按下的样子,(平时不按按钮时,按钮的样子看起来是凸起的),而且按钮还会记录自己当前的状态是被按下的;
  • 紧接着如果用户松开鼠标,Windows操作系统也会把这个消息传递给按钮:【你被用户松开了】,然后按钮的内部逻辑又开始执行了,典型的内部逻辑是:按钮会快速把自己绘制成弹起的样子,同时把自己的状态记录为没有被按下;
  • 这时重要的时刻来了:按钮的内部逻辑会检测到自己是被连续地执行了按下并松开的操作,也就意味着【按钮被点击了】,所以按钮会马上使用自己的Click事件通知外界自己被点击了,也就是说Click事件发生了;此时如果有别的对象订阅着这个按钮的Click事件,那么这些事件的响应者就可以开始工作了,也就是说:【这个程序在事件的驱动下开始运行了】;
  • 所以说:【是用户的操作通过Windows操
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值