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
    新年快到了,祝福大家在新的一年里,健康平安快乐。

  • 相关阅读:
    Linux操作系统是如何工作的?破解操作系统的奥秘
    SSIS Send Mail
    数据库邮件
    Script component 用法
    OleDB Destination 用法
    OLE DB Command transformation 用法
    Conditional Split component 用法
    Execute Sql Task 的Result DataSet如何返回
    binary 和 varbinary 用法全解
    TSQL HASHBYTES 用法
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/1662979.html
Copyright © 2011-2022 走看看