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

    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);
            }
        }*/

  • 相关阅读:
    oracle 同义词
    Git分支操作
    [转]Hibernate状态 (merge,attachDirty,attachClean)
    [转]对jQuery的事件绑定的一些思考
    [转]为什么用Spring来管理Hibernate?
    [转]spring注入静态bean
    ajax 请求调用问题
    Java常用开发组件介绍
    Spring @Value SpEl 知识点小记
    radio中最佳解决方案
  • 原文地址:https://www.cnblogs.com/lhking/p/1372469.html
Copyright © 2011-2022 走看看