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

     

    其实事件就是一种特殊的委托。
         有事件,就会有对事件进行处理的方法,而事件和处理方法之间是怎么联系起来的呢?
         委托就是他们中间的桥梁,事件发生时,委托会知道,然后将事件传递给处理方法,处理方法进行相应处理。
        
         比如,在WinForm中最常见的是按钮的Click事件,它是这样委托的:this.button1.Click+=new System.EventHandler(this.button1_Click);按钮按下后就会触发button1_Click方法进行处理。
         EventHandler就是系统类库里已经声明的一个委托。this.button1.Click是委托EventHandler的实例,this.button1_Click是方法名
        
         自定义事件及其处理
         EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式:
    delegate void 事件委托名(object sender,EventArgs e);
    object用来传递事件的发生者,比如Button控件就是一个事件发生者;EventArgs用来传递事件的细节。
         * */
    /*    class Class1
        { //事件发送类
            public delegate void UserRequest(object sender, EventArgs e); //定义委托
            public event UserRequest OnUserRequest; //定义一个委托类型的事件
            public void run()
            {
                while (true)
                {
                    if (Console.ReadLine() == "a")
                    {
                        OnUserRequest(this, new EventArgs()); //产生事件
                    }
                }
            }
        }
        class Class2
        {//事件接受类
            static void Main(string[] args)
            {
                Class1 c1 = new Class1();
                c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest); //委托实例化后绑定事件
                c1.run();
            }
            private static void c1_OnUserRequest(object sender, EventArgs e)
            {
                Console.WriteLine("/t你触发了事件");
            }
        }*/
      /*  //带事件数据的事件类,从EventArgs继承
        class OnUserRequestEventArgs : EventArgs
        {
            private string inputText;
            public string Inputtext
            {
                get { return inputText; }
                set { inputText = value; }
            }
        }
        class Class1
        {//事件发送类
            public delegate void UserRequest(object sender, OnUserRequestEventArgs e);//声明委托
            public event UserRequest OnUserRequest; //定义一个委托类型的事件
            public void run()
            {
                while (true)
                {
                    Console.WriteLine("请输入内容:");
                    string a = Console.ReadLine();
                    OnUserRequestEventArgs e1 = new OnUserRequestEventArgs();
                    e1.Inputtext = a;
                    OnUserRequest(this, e1);
                }
            }
        }
        class Class2
        {//事件接受类
            static void Main()
            {
                Class1 c1 = new Class1();
                c1.OnUserRequest+=new Class1.UserRequest(c1_OnUserRequest);
                c1.run();
            }
            private static void c1_OnUserRequest(object sender, OnUserRequestEventArgs e)
            {
                Console.WriteLine("/t你输入的是:"+e.Inputtext);
            }
        }*/

  • 相关阅读:
    一卦,测一年运气
    测一下我心中想的事
    一卦,测一下我心里想的事
    这一卦,学到了不少东西
    癸山丁向下卦(七运)
    起卦测我心里想的事
    现在的卦,越来越看不懂了
    luogu P2759 奇怪的函数 |二分答案
    luogu P2515 [HAOI2010]软件安装 |Tarjan+树上背包
    luogu P2343 宝石管理系统 |分块+堆
  • 原文地址:https://www.cnblogs.com/minotmin/p/2699348.html
Copyright © 2011-2022 走看看