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

  • 相关阅读:
    SpringMVC上传文件的三种方式(转载)
    几种流行Webservice框架性能对比(转载)
    @QueryParam和@PathParam使用方法比较
    MyEclipse开发Rest服务入门
    WebService SOAP、Restful和HTTP(post/get)请求区别
    Java WebService入门实例
    WebService 与 Socket 区别
    Double 数据保留两位小数二:直接截取小数后面两位,不进行四舍五入
    SVN 常识
    Android 友盟分享躺过的几个坑,大坑,坑爹啊
  • 原文地址:https://www.cnblogs.com/lhking/p/1372469.html
Copyright © 2020-2023  润新知