zoukankan      html  css  js  c++  java
  • C#事件

    C#中的事件处理实际上是一种具有特殊签名的delegate,象下面这个样子:

    public delegate void MyEventHandler (object sender, MyEventArgs e)

    sender代表事件发送者,e是事件参数类

    创建步骤

      (1)、定义delegate对象类型。
      (2)、定义事件参数类,从System.EventArgs类派生。如果事件不带参数,这一步可以省略。
      (3)、定义“事件处理方法,它应当与delegate对象具有相同的参数和返回值类型”。//创建
      (4)、用event关键字定义事件对象,它同时也是一个delegate对象。
      (5)、用+=操作符添加事件到事件队列中(-=操作符能够将事件从队列中删除)。//订阅
      (6)、在需要触发事件的地方用调用delegate的方式写事件触发方法。一般来说,此方法应为protected访问限制,既不能以public方式调用,但可以被子类继承。
      (7)、在适当的地方调用事件触发方法触发事件。

    事件例子1

    //事件类 
    public class EventSend {
                public delegate void EventHandler(object sender, EventArgs a);//第一步,创建委托
                                                                              //第二步省略
                public class HandleClass {
                    public void HandleFunction(object sender, EventArgs a)   //第三步事件处理函数,参数必须一样,以供订阅
                    {
                        Console.WriteLine("hello");
                    }
                }
          public event EventHandler oneEvent;//第四步定义事件实体
                private HandleClass handleClass;//处理函数实例化
                public EventSend()//构造函数
                {
                    handleClass = new HandleClass();
                    this.oneEvent += new EventHandler(handleClass.HandleFunction);//第五步订阅,添加事件到事件队列
                }
                protected void GetEvent(EventArgs e)//第六步事件触发函数
                {
                    if (oneEvent != null) {
                        oneEvent(this, e);
                    }
                }
          public void CreateEvent()//第七步触发事件
                {
                    EventArgs e = new EventArgs();
                    if (Console.ReadLine() == "a")
                        this.GetEvent(e);
                    else
                        Console.WriteLine("未触发事件");
                }
            }

    事件例子2

    //调用事件
     static void Main(string[] args) {
                Console.WriteLine("请输入小写字母a触发事件");
                for (;;)
                {
                    EventSend event1 = new EventSend();
                    event1.CreateEvent();
                }
            }
  • 相关阅读:
    vivado操作基本问题
    IIC通信控制的AD5259------在调试过程中遇到的奇葩问题
    FPGA基础架构总结
    PLL到底是个啥么东西呢?
    CSS-3 Transform 的使用
    CSS-3 box-shadow 的使用
    一些CSS3的乐趣
    CSS-3 文字阴影—text-shadow 的使用
    Jquery 较好的效果
    如何关闭输入法
  • 原文地址:https://www.cnblogs.com/feichangnice/p/5251747.html
Copyright © 2011-2022 走看看