zoukankan      html  css  js  c++  java
  • clr via c# 事件

    1,定义需要发送给事件接收者的附加信息的类

    class NewMailEventArgs:EventArgs//第一步:定义一个容纳给事件接受者信息的类。
        {
            public string From { get; }
            public string To { get; }
            public string Subject { get; }
            public NewMailEventArgs(string from,string to,string subject)
            {
                this.From = from;
                this.To = to;
                this.Subject = subject;
            }
        }

    2,定义事件成员

    class MailManager
        {
            public event EventHandler<NewMailEventArgs> NewMail;//首先,这是一个委托方法,原型是void MethodName(Object sender,NewMailEventArgs e)
            protected virtual void OnNewMail(NewMailEventArgs e)
            {
                e.Raise<NewMailEventArgs>(this, ref NewMail);
            }
    
            public void SimulateNewMail(string from,string to ,string subject)
            {
                OnNewMail(new NewMailEventArgs(from, to, subject));
            }
        }
    • 首先定义了一个事件成员 NewMail 并且,其类型是EventHandler<NewMailEventArgs>,该类型的原型是

                 void Delegate<T>(object sender,T e);

    •    然后,定义一个出发函数来触发事件。OnNewMail(NewMailEventArgs e),该事件,通过 NewMail(this,e) 来触发

      上面是一个扩展调用,实际上就是调用 NewMail(this,e);

      一个事件,在内部实际上生成了3个构造:

    • 一个私有的委托字段
    • 一个add_xxx方法
    • 一个remove_xxx方法
  • 相关阅读:
    return和yield的区别
    基本装饰器
    javascript实例:两种方式实现tab栏选项卡
    javascript实例:路由的跳转
    javascript实例:点亮灯泡
    标签页QTabWidget
    主窗口QMainWindow和启动画面
    各种对话框
    列表视图QlistView
    拆分窗口QSplitter
  • 原文地址:https://www.cnblogs.com/frogkiller/p/12264364.html
Copyright © 2011-2022 走看看