zoukankan      html  css  js  c++  java
  • .NET 事件设计模式回顾

    看《.NET框架程序设计》很多遍,对事件的理解逐步加深,写个例子与大家分享。
    1  定义事件的传递传数
    public class EQArgs: EventArgs
    {
        private string msg;
        public EQArgs(string arg)
        {
            msg=arg;
        }
        public string Message
        {
        get { return msg;}
        }   
    }
    2  定义代理
    public delegate void EQEventHandler(object sender,EQArgs e);

    3  定义事件的触发对象和时机
    public class Pulisher
    {
        public event EQEventHandler EQ;
        protected void OnEQ(EQArgs e)
        {
            if(EQ!=null)
                EQ(this,e);
        }
        public void Trigger(string msg)
        {
            EQArgs  e=new EQArgs(msg);
            OnEQ(e);
        }
    }
    4  外部代码,触发事件
    Pulisher  p=new Pulisher();
    p.EQ+=new EQEventHandler(handler);
    p.Trigger("happy Chinese year");
    事件的方法
    static void handler(object sender, EQArgs e)
        {
            Console.WriteLine(e.Message);
        }

    运行结果
    image

    园子里的这篇文章写的很不错,可供参考
    C# 中的委托和事件

    与事件相关的问题
    1 WinForms和ASP.NET 中,我们经常会说到的事件的传递。事件要从最顶层的对象接收,如果不处理,就交给子对象处理,直到有对象处理这个事件为止,事件才停止传递。
    2 如果为同一个控件设计很多事件,优先使用EventHandleSet类型,提高性能。

    image095
    新年快到了,祝福大家在新的一年里,健康平安快乐。

  • 相关阅读:
    Tomcat环境的搭建(web基础学习笔记一)
    子查询二(在HAVING子句中使用子查询)
    子查询一(WHERE中的子查询)
    分组统计查询(学习笔记)
    Oracle体系结构一(学习笔记)
    表分区(学习笔记)
    索引(学习笔记)
    序列(学习笔记)
    触发器七(复合触发器)(学习笔记)
    触发器六(系统触发器)(学习笔记)
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/1662979.html
Copyright © 2011-2022 走看看