zoukankan      html  css  js  c++  java
  • 第十一章 事件

    以前的2片的文章:自己理解的不是很深入,先放之前的2篇,本章也不打算用多么晦涩难懂的原理机制,来点实用的。

    https://www.cnblogs.com/LiMin/p/7212217.html

    https://www.cnblogs.com/LiMin/p/10364867.html

     

         在类型中定义的一种成员,定义了事件成员的类或者类的实例。允许通知其他对象发生了特定的事情。

    比如Button 类定义了click 事件,应用程序中一个或者多个对象可以通过该事件接收发生的click操作,以便做后续操作。

     

    Button类就是一个类,click 就是事件成员, 其他应用程序就是其他对象,通过事件成员click,其他对象被通知发生了特定的事情:点击。这样事件通俗的定义就解释完了。

    首先我们看,事件是类型的成员,因此必须有一个类型,一个事件成员,一个其他对象才能构成事件的定义到触发,它才能发生作用。

    那么事件是怎么通知到其他对象呢?因为时间可以理解为一个方法表,上面登记了其他对象接收该特定事情的方法入口。当事情发生时候,调用这些方法,那么其他对象就知道该特定事情就发生了。

     先Demo后面有分析

     

    using System;
    
    namespace EventTest
    {
        public class EventDemo
        {
            public void EventTest()
            {
                Cat cat = new Cat();
                MouseEventArgs ms = new MouseEventArgs();
                MasterEventArgs mas = new MasterEventArgs();
                cat.Calling += ms.Escape;//老鼠对 clling 订阅
                cat.Calling += mas.Wakened;//人 对 calling 订阅
                cat.Call(); //猫叫
            }
        }
        public sealed class Cat
        {
            public event EventHandler Calling;
            public void Call()
            {
                Console.WriteLine("猫叫了...");
                Calling?.Invoke(this, EventArgs.Empty);
            }
        }
        public sealed class MouseEventArgs : EventArgs
        {
            public void Escape(object sender, EventArgs e)
            {
                Console.WriteLine("老鼠逃跑了...");
            }
        }
        public sealed class MasterEventArgs : EventArgs
        {
            public void Wakened(object sender, EventArgs e)
            {
                Console.WriteLine("主人醒了");
            }
        }
    }

    那么我们来开始定义事件

    三要素:

            1.其他对象、事件、类

               其他对象:就是一个接收通知的类型吧 按照标准规范这些类型继承自:System.EventArgs并且类型结尾以EventArgs结尾

              

           2.事件成员本身

            

           3.

             类中的方法要触发其他对象的响应,

             

           4.触发 就是给事件注册进各自的对象方法即可

           

        这样一个简单版本的形式主义事件就基本上完成了,也够用了。由于理解有限,以及事件讲起来麻烦,因此就以这个简单实用的版本来进行讲解。

     

     

  • 相关阅读:
    理解Javascript_13_执行模型详解
    vs2005的快捷键
    去除 VS.Net 2003 项目的 VSS 息的脚本
    VS2005的隐藏快捷键
    程序员,你离坐牢还有多远
    对路径XXX的访问被拒绝(文件操作权限)的解决方法
    安装VS2005 SP1之后无法更改或卸载VS2005的处理方法
    强大的.NET反编译工具Reflector及插件
    反编译工具Reflector下载(集成两个常用.net插件,FileGenerator和FileDisassembler)
    两种彻底删除VIEWSTATE的方法
  • 原文地址:https://www.cnblogs.com/LiMin/p/10841033.html
Copyright © 2011-2022 走看看