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.触发 就是给事件注册进各自的对象方法即可

           

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

     

     

  • 相关阅读:
    REST Security with JWT using Java and Spring Security
    UserMapper.selectByPrimaryKey-Inline 报错的解决办法
    Nginx反向代理,负载均衡,redis session共享,keepalived高可用
    HTML 5 Web 存储-localStorage
    Android之自定义checkbox样式
    android fragment传递参数_fragment之间传值的两种方法
    linux常用基本命令
    fragment点击跳转到外部Activity后,怎么通过返回按钮返回
    android 中FragmentActivity中模拟返回键返回上一个Activity效果
    Fragment与Activity相互传递数据:
  • 原文地址:https://www.cnblogs.com/LiMin/p/10841033.html
Copyright © 2011-2022 走看看